如何将CustomControl DataTrigger绑定到viewmodel DataContext

时间:2015-02-28 11:17:07

标签: c# wpf xaml mvvm-light

使用MVVM灯,我有一个自定义控件的控件模板。此控件有多个实例。样式在Generic.xaml中设置。

<Style TargetType="{x:Type tgvw:TimeSlotRect}">

    <Setter Property="DataContext" Value="{Binding TimeSlotRectViewModel, Mode=OneWay, Source={StaticResource Locator}}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type tgvw:TimeSlotRect}">

                <Border Background="{TemplateBinding Background}"
                        Name="TimeSlotBorder"
                        BorderBrush="#A5BFE1"
                        BorderThickness="0,0.5,0,0.5" Height="30">
                    <Rectangle Fill="Beige" Name="Rect">

                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="MouseLeftButtonDown">
                                <cmd:EventToCommand Command="{Binding MouseDownCommand, Mode=OneWay}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>

                    </Rectangle>
                </Border>

                <ControlTemplate.Triggers>
                    <DataTrigger Binding="{Binding DataContext.IsSelected}" Value="True" >
                        <Setter Property="Fill" Value="Black" TargetName="Rect"/>
                    </DataTrigger>
                </ControlTemplate.Triggers>

            </ControlTemplate>
         </Setter.Value>
    </Setter>
</Style>

这个想法是鼠标按钮单击触发视图模型中的一个命令,该命令将其 IsSelected 属性设置为 true 然后矩形应该选择它并更改它的填充黑色 - 但它似乎不起作用。

如果我将DataTrigger绑定到viewmodel,如下所示:

                <ControlTemplate.Triggers>
                    <DataTrigger Binding="{Binding TimeSlotRectViewModel.IsSelected, Source={StaticResource Locator}}" Value="True" >
                        <Setter Property="Fill" Value="Black" TargetName="Rect"/>
                    </DataTrigger>
                </ControlTemplate.Triggers>

它会发射并且每个控件都变为黑色。我有什么想法吗?

0 个答案:

没有答案