<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中文本框的背景应根据所选的ComboBox项进行着色。但是现在当我在转换器类中放置一个断点时,转换器根本不会触发。我在某处读到你需要一个DataContextProxy,如果是这样我该怎么做?
答案 0 :(得分:0)
您可以尝试将组合框移动到UserControl的资源中(将名称更改为x:Key)。
然后用ContentPresenter替换原始组合框位置,ContentPresenter的内容是资源中的组合框。
datagrid的绑定需要更改为Background =“{Binding Source = {StaticResource comboBoxKeyInResources}”,Path = SelectedIndex ...
这样转换器绑定应该可以工作。
答案 1 :(得分:0)
我做到了这一点,这完全按照我想要的方式运作:
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;