シンプルなDataGridTemplateColumn
コンボボックスを作成しました。Visibility
列全体と および のItemSource
バインドSelectedItem
を設定しますComboBox
(行ごとに異なる必要がありItemsSource
ます)。列を非表示にするまで、すべて正常に機能します。その後 (もう一度表示します)、ComboBoxes
は空ですが、ItemsSource
およびSelectedItem
バインディングのゲッターは適切な値を返します。バインディングのセッターを呼び出すとSelectedItem
、以前の値は正しく、新しい値が に表示されComboBox
ます。したがって、すべてが正しいのですが、なぜ列を非表示にした後、コンボボックスがリセットされ、データViewModel
も正しく、何も変更されないのですか?
<DataGridTemplateColumn Header="Total" Visibility="{Binding ProxyData.ReportConfigurationVM.ShowTotalRow, Source={StaticResource BindingProxy}, Converter={StaticResource BoolToVisibilityConverter}}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="70"
ItemsSource="{Binding Path=TotalsAggregationFunctions}"
SelectedItem="{Binding Path=SelectedTotalAggregation, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
私のビューモデル:
public enum AggregationFunction
{
None,
Sum,
Avg
}
private AggregationFunction selectedTotalAggregation;
public AggregationFunction SelectedTotalAggregation
{
get { return this.selectedTotalAggregation; }
set { SetField(ref this.selectedTotalAggregation, value); } // this calls OnPropertyNotify automatically
}
public IEnumerable<AggregationFunction> TotalsAggregationFunctions
{
get
{
// no matter what I return, nothing works when hide the column...
return new AggregationFunction[] { AggregationFunction.None, AggregationFunction.Sum, AggregationFunction.Avg, AggregationFunction.Min, AggregationFunction.Max };
}
}
ComboBoxes
非表示 (および表示) 列の後にリセットされたスクリーンショット。hide の後に感嘆符が表示されるため、hide が問題であることはわかっています。
何か案が?ありがとう。