ItemsSourceに基づいて色付けされる四角形を含むdataTemplateでItemControlを作成しました。私のアプリケーションに供給される日付は、ハッシュ記号(#)を含まないカラー16進コードです。ちょうど6文字の文字列。色が正しく表示されるようにするには、6文字の文字列の先頭に#を付ける必要があります。 EXP#A31F34長方形のFillプロパティにMultibinding.StringFormatを使用する方法は?
は、ここで私はきちんとHexcodeに文字列をフォーマットするMultiBinding.StringFormatを使用していますが、長方形の塗りつぶしがある理由として困惑していますXAML
<DataTemplate x:Key="ColorSequenceSwatchPreviews">
<Rectangle Name="ColorSwatch" Height="20" Width="120" RadiusX="3" RadiusY="3" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0,3,0,3">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill">
<Setter.Value>
<MultiBinding>
<MultiBinding.StringFormat><![CDATA[#{0}]]></MultiBinding.StringFormat>
<Binding Path="InnerXml" Mode="OneWay" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</Rectangle.Style>
</Rectangle>
です着色しない。
TextBoxでMultiBindingを行うと四角形が色づけされ、次に四角形のfillプロパティがtextBoxのTextプロパティにバインドされます。しかし、私は最初の例のように矩形の塗りつぶしプロパティから直接バインドするほうがはるかに好きです。
<DataTemplate x:Key="ColorSequenceSwatchPreviews">
<StackPanel Orientation="Horizontal" Margin="0,3,0,3" VerticalAlignment="Center" HorizontalAlignment="Left">
<TextBox x:Name="Hexcode" Visibility="Collapsed">
<TextBox.Text>
<MultiBinding>
<MultiBinding.StringFormat><![CDATA[#{0}]]></MultiBinding.StringFormat>
<Binding Path="InnerXml" Mode="OneWay" />
</MultiBinding>
</TextBox.Text>
</TextBox>
<Rectangle Name="ColorSwatch" Height="20" Width="120" RadiusX="3" RadiusY="3" VerticalAlignment="Center" HorizontalAlignment="Left">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="{Binding ElementName=Hexcode,Path=,Mode=OneWay}" />
</Style>
</Rectangle.Style>
</Rectangle>
</StackPanel>
動作する最初の例を取得するか、私は2番目の例のコードを使用して立ち往生しています方法はありますか?
は、後ろにコードが含まれていないことを望んでいました。私はこの解決策が好きです! – EMAW2008