WPF Datagrid中的选定行丢失焦点mvvm模式

时间:2013-12-30 14:15:02

标签: c# wpf xaml mvvm datagrid

我有这个问题:

我有一个用户控件,其中包含: 1)DataGrid

<DataGrid   x:Name="GrdHistoricalInformation"
            Style="{StaticResource BaseDataGridStyle}"
            SelectedIndex="0"
            ItemsSource="{Binding BarList}"                  
            HorizontalScrollBarVisibility="Auto"  
            BorderThickness="1" 
            BorderBrush="Black" 
            HorizontalAlignment="Stretch"
            CanUserSortColumns="False"
            DockPanel.Dock="Top"
            ColumnHeaderHeight="50"
            SelectedItem="{Binding SelectedBar, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">

2)一个用户控件,其中包含一些在我的视图模型上触发命令的单选按钮。

我的问题是,当我选择一行然后我按下一个单选按钮时,网格上的所选项目会丢失“突出显示”(即使我在视图模型中正确绑定了所选项目)

这里我选择一行: 1

然后当我按下RB失去焦点时

enter image description here

由于mvvm模式,我无法在解决方案中使用事件。

任何建议或帮助都会非常有用!提前谢谢。

编辑:

尝试这种风格:

<Style.Triggers>
    <MultiTrigger>
        <MultiTrigger.Conditions>
            <Condition Property="IsSelected" Value="True" />
            <Condition Property="Selector.IsSelectionActive" Value="False" />
        </MultiTrigger.Conditions>
        <Setter Property="Background" Value="#660066"/>
    </MultiTrigger>
</Style.Triggers>

但仍然没有工作。

2 个答案:

答案 0 :(得分:2)

请改为尝试:

<DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="#660066" />
                <Setter Property="BorderBrush" Value="#660066" />
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGrid.CellStyle>

答案 1 :(得分:1)

DataGridRow有两种视觉状态:Normal_Selected和Unfocused_Selected。看来你的风格没有在Unfocused_Selected中定义任何颜色。