WPFでは、私は2列を持つDatagridを持っています。 最初の文字列は文字列、2番目の文字列はcomboBoxです。 私の目標は、カラム#1の文字列が含まれるたびに、コンボボックスのIsEnableプロパティをfalseに設定することです。プログラムで生成されたComboBoxのenableプロパティをWPFのDatagridに設定する方法はありますか?
私のデータソースはデータビューから来ています(他のいくつかの列は動的に生成する必要があります)。
私は解決策が "バインディング"値の周りになければならないと思いますが...私は何を内部に置くべきか分かりません。
DataView DG = FunctionCreatingADataView();
Datagrid1.ItemsSource = DG;
Datagrid1.AutoGenerateColumns = true;
Datagrid1.Items.Refresh();
DataGridTemplateColumn dgTemplateColumn = new DataGridTemplateColumn();
dgTemplateColumn.Header = "Attachment";
var newCombobox = new FrameworkElementFactory(typeof(ComboBox));
newCombobox.SetValue(ComboBox.NameProperty, "myCBB");
Binding enableBinding = new Binding();
enableBinding.Source = "HasAttachment";// A column in my DG
enableBinding.Mode = BindingMode.OneWay;
newCombobox.SetValue(ComboBox.IsEnabledProperty, enableBinding);
List<string> listUnitAlreadyAttached = new List<string>();
// Load list with some code
enableBinding.Source = listUnitAlreadyAttached;
newCombobox.SetBinding(ComboBox.ItemsSourceProperty, enableBinding);
var dataTplT = new DataTemplate();
dataTplT.VisualTree = newCombobox;
dgTemplateColumn.CellTemplate = dataTplT;
Binding bindingIsEnable = new Binding();
Datagrid1.Columns[1] = dgTemplateColumn;
あなたは既にあなたの条件を書いています:**私の目標は、コンボボックスのIsEnableプロパティにカラム#1の文字列が含まれるたびにfalseに設定することです。** 'IMultiValueConverter'を書き、このコンバーターを列とコンボボックスの値。 別のヒント:なぜこれをコードの背後に置いていますか? xamlで行う方が簡単で読みやすくなります。 –
あなたのMightyを追加してくれてありがとう。私は動的に作成された他の列を持っているので(2から数千に及ぶ可能性があります)、XAMLでは複雑に見えるので、プログラムでこれを記述することにしました。 – PetersLast
ようこそ。実装に苦労したら、私はあなたを助けることができます。 –