いくつかのテキスト列を持つデータグリッドがあり、すべてのテキスト列のデフォルト値は1です。また、 'save'という名前のボタンを使用して、データグリッドの列。 私の要件は、データグリッドのテキスト列の値が変更された場合にのみ、[保存]ボタンを有効にする必要があります。助けてください。以下はデータグリッドのテキスト列の値が変更されたときに保存ボタンを有効にする
は私のコードです: -
View:-
x:Name="datagrid_range_targets" local:SetMinWidthToAutoAttachedBehaviour.SetMinWidthToAuto="true"
ItemsSource="{Binding RangeData, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"
Margin="0,5,5,0" Loaded="OnUserControlLoaded" Unloaded="OnUserControlUnloaded" Style="{StaticResource style_data_grid}">
<DataGrid.Resources>
<Style x:Key="errorStyle" TargetType="{x:Type TextBox}">
<Setter Property="Padding" Value="-2"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn x:Name="col_range_targets_range"
Width="Auto"
Binding="{Binding Name}"
Header="Range" IsReadOnly="True" />
<DataGridTextColumn x:Name="col_budget_report_year1"
Width="Auto"
Header="Year 01" EditingElementStyle="{StaticResource errorStyle}">
<DataGridTextColumn.Binding>
<Binding Path="budgetReportYear1" Mode="TwoWay"
>
<Binding.ValidationRules>
<local:GreaterThanOrEqualLessThanOrEqual Max="99"
Min=".0000001" />
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
<DataGridTextColumn x:Name="col_budget_report_year2"
Width="Auto"
Header="Year 02" EditingElementStyle="{StaticResource errorStyle}">
<DataGridTextColumn.Binding>
<Binding Path="budgetReportYear2" Mode="TwoWay"
UpdateSourceTrigger="Default">
<Binding.ValidationRules>
<local:GreaterThanOrEqualLessThanOrEqual Max="99"
Min="0.0000001" />
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
<Button x:Name="Save" Click="btn_Set_mulutiplier_Click" Content="Set multiplier"
Style="{StaticResource button_SetMultiplier}" />
View Model-
private double _budgetReportYear1 = 1;
private double _budgetReportYear2 = 1; public double budgetReportYear1
{
get { return _budgetReportYear1; }
set
{
_budgetReportYear1 = value;
Onchanged("budgetReportYear1");
}
}
public double budgetReportYear2
{
get { return _budgetReportYear2; }
set
{
_budgetReportYear2 = value;
Onchanged("budgetReportYear2");
}
}
ご返信ありがとうございます。私は同じアプローチを使用しましたが、保存ボタンはまだ有効な状態になっています。私の場合は、上記のように、私は使用してプライベートプロパティでdatagridtext列のデフォルト値を1に設定しています。私はそれが働いていない理由だと思う。 – Ram
このソリューションは私のシナリオでは機能しません。デフォルトでは、IsEnabled = "{Binding columnModified}"を使用した後でも[保存]ボタンが有効になります。 – Ram