数据网格模板列的数据模板内另一个控件的数据绑定元素名称,并且转换器未触发
本文关键字:数据 转换器 数据绑定 网格 数据网 另一个 元素 控件 | 更新日期: 2023-09-27 18:19:41
<UserControl.Resources>
<local:ColorConverter x:Key="cc"></local:ColorConverter>
</UserControl.Resources>
<sdk:DataGrid x:Name="gridAllContacts" Grid.Row="1" Grid.Column="0" Width="500" Height="300" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Name">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding Path=Name, Mode=TwoWay}" Background="{Binding ElementName=columns2, Path=SelectedIndex, Mode=TwoWay, Converter={StaticResource cc}}" ></TextBox>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<ComboBox Name="columns2" VerticalAlignment="Center" Height="25" HorizontalAlignment="Left" Margin="150,0,0,0" SelectedIndex="0">
<ComboBoxItem>Name</ComboBoxItem>
<ComboBoxItem>School</ComboBoxItem>
<ComboBoxItem>ContactID</ComboBoxItem>
</ComboBox>
特定列的 datatemplate 内文本框的背景应根据所选的组合框项进行着色。但是现在,当我在转换器类中放置断点时,转换器根本没有触发。我在某处读到您需要一个 DataContextProxy,如果是这样,我该怎么做?
您可以尝试将组合框移动到用户控件的资源中(将名称更改为 x:Key(。
然后将原始组合框位置替换为内容演示器,其内容是资源中的组合框。
数据网格的绑定需要更改为 Background="{Binding Source={StaticResource comboBoxKeyInResources}", Path=SelectedIndex...
这样,转换器绑定应该可以工作。
我这样做
是正确的,它完全按照我想要的方式工作:
DataGridCell tempCell = new DataGridCell();
Style cellStyle = new Style();
cellStyle.TargetType = tempCell.GetType();
cellStyle.Setters.Add(new Setter(DataGridCell.ForegroundProperty, new SolidColorBrush(Colors.Red)));
gridAllContacts.Columns[0].CellStyle = cellStyle;