wpf toggle datagridcell只读

时间:2013-11-22 10:11:29

标签: c# wpf datagrid

我有一个数据网格,其中有一列即数量,当用户按下表格上的“编辑”按钮时,用户只能输入数量(可编辑),这样就像只读字段一样。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

如果您使用CheckBoxToggleButton,则只需Binding即可完成此操作,无需任何代码:

<ToggleButton Name="EditButton" Content="Edit" />
...
<DataGrid ItemsSource="{Binding YourCollection}">
    <DataGrid.Columns>
        ...
        <DataGridTextColumn Header="Quantity" IsReadOnly="{Binding IsChecked, 
            ElementName=EditButton}" Binding="{Binding Quantity}" />
        ...
    </DataGrid.Columns>
</DataGrid>

更新&gt;&gt;&gt;

如果您使用课程在DataGrid中显示您的项目(这总是一个好主意),那么有一个简单的解决方案。您可以向bool属性添加额外的Bind属性,并且每次IsReadOnly属性更改时都可以更新bool值:< / p>

Quantity

和XAML:

public string SerialNo
{
    get { return serialNo; } 
    set
    {
        serialNo = value;
        NotifyPropertyChanged("SerialNo");
        // Update new property
        IsQtyReadOnly = serialNo == "The read only value";
    }
}

public bool IsQtyReadOnly // <<< New property
{
    get { return isQtyReadOnly; } 
    set { isQtyReadOnly= value; NotifyPropertyChanged("IsQtyReadOnly"); }
}

如果这样做,只要<ToggleButton Name="EditButton" Content="Edit" /> ... <DataGrid ItemsSource="{Binding YourCollection}"> <DataGrid.Columns> ... <DataGridTextColumn Header="Qty" IsReadOnly="{Binding IsQtyReadOnly}" Binding="{Binding Qty}" /> ... </DataGrid.Columns> </DataGrid> 属性值发生变化,IsQtyReadOnly属性就会自动更新。

答案 1 :(得分:0)

您需要该按钮的事件处理程序:

private void OnClick(object sender, RoutedEventArgs e)
{
    QtyColumn.IsReadOnly = !QtyColumn.IsReadOnly;
}