0

ビューモデルに次のようなプロパティがあります。

public class TestObject
{
    public Color Color { get; set; }
    public IList<Items> { get; set; }
    ...
}

次のようなビューのリストボックス:

<ListBox ItemsSource="{Binding TestObject.Items}" ....

次のようなリストボックススタイル:

<Style TargetType="ListBoxItem">
           ...
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBoxItem">
                        <Border x:Name="LayoutRoot" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="SelectionStates">
                                    <VisualState x:Name="Unselected"/>
                                    <VisualState x:Name="Selected">
                                        <Storyboard>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentContainer" Storyboard.TargetProperty="Foreground" Duration="0">
                                                <DiscreteObjectKeyFrame  KeyTime="0">
                                                    <DiscreteObjectKeyFrame.Value>
                                                        <SolidColorBrush Color="{**Binding to TestObject.Color ???}**" />
                                                    </DiscreteObjectKeyFrame.Value>
                                                </DiscreteObjectKeyFrame>
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="Background" Duration="0">
                                                <DiscreteObjectKeyFrame  KeyTime="0">
                                                    <DiscreteObjectKeyFrame.Value>
                                                        <SolidColorBrush Color="{**Binding to TestObject.Color ???}**"/>
                                                    </DiscreteObjectKeyFrame.Value>
                                                </DiscreteObjectKeyFrame>
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>

...

お願いします...どうすればItemsSourceバインディングからバインドできますか?

4

1 に答える 1

0

あなたの質問のコントロールスタイルの部分についてはわかりません...しかし、一般的に、現在のアイテムの外にあるものにバインドしたい場合は、ElementNameトリックを使用して機能させます-たとえば

 <Grid Name='RootLayout'>
     <ListBox ItemsSource='{Binding Items}'>
          <ListBox.ItemTemplate>
               <DataTemplate>
                    <TextBlock Text="{Binding Title}" Foreground="{Binding DataContext.PriorityColor, ElementName=RootLayout}" />
               </DataTemplate>
          </ListBox.ItemTemplate>
     </ListBox>
 </Grid>

また、通常、ViewModel に直接 Color を含めることはしませんが、代わりに次のようなコンバーターを使用します。

 <TextBlock Text="{Binding Title}" Foreground="{Binding DataContext.Priority, ElementName=RootLayout, Converter={StaticResource PriorityToColorConverter}}" />

これは、クロスプラットフォーム ビューモデルを実行している場合に特に役立ちます。Color クラスと Brush クラスは WP7 と WinRT 間で共有されず、MonoTouch と MonoDroid でも共有されないためです。

于 2012-07-27T09:50:18.397 に答える