繁体   English   中英

Datagrid MVMVM WPF中的IsEnabled按钮

[英]IsEnabled button in datagrid mvvm wpf

如何使用mvvm启用/禁用datagrid中的按钮,其中列状态等于c#中的某些值?

谢谢。

PS我是mvvm和wpf的新手。

编辑:

我的代码仅在Datagrid中打印数据。 我想在列状态等于1时禁用编辑按钮。

您可以在下面看到我的代码。

模型文件

public class Reestr
{
    private int id;
    private string date;
    private string market;
    private int status;
    public int Id
    {
        get { return id; }
        set {
            id = value;
        }
    }   
    public string Date
    {
        get { return date; }
        set {
            date = value;
        }
    }
    public string Market
    {
        get { return market; }
        set {
            market = value;
        }
    }
    public int Status
    {
        get { return status; }
        set {
            status = value;
        }
    } 
}

ViewModel文件

public ReestrViewModel()
{
    reestr = GetListOfReestrs();
    reestr.Add(new Reestr() { Date = "01.08.2017", Market = "Market1", Status = 0 });
    reestr.Add(new Reestr() { Date = "02.08.2017", Market = "Market2", Status = 1 });
}
public ObservableCollection<Reestr> ReestrItems
{
    get { return reestr; }
}
public ObservableCollection<Reestr> GetListOfReestrs()
{
    return reestr;
}

XAML文件:

<DataGrid GridLinesVisibility="All"
          AutoGenerateColumns="False"
          CanUserAddRows="False"
          x:Name="ReestrDataGrid"
          ItemsSource="{Binding ReestrViewModel.ReestrItems}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ID"
                            Binding="{Binding Id}"
                            IsReadOnly="True"
                            Visibility="Hidden"
                            Width="*"/>
        <DataGridTextColumn Header="Date"
                            Binding="{Binding Date}"
                            IsReadOnly="True"
                            Width="*"/>
        <DataGridTextColumn Header="Market"
                            Binding="{Binding Market}"
                            IsReadOnly="True"
                            Width="*"/>
        <DataGridTextColumn Header="Status"
                            Binding="{Binding Status}"
                            IsReadOnly="True" 
                            Width="*"/>
        <DataGridTemplateColumn Header="Operations" Width="200">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Button x:Name="ViewButton"
                                Click="ViewButton_Click"></Button>
                        <Button x:Name="EditButton"></Button>
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>               
</DataGrid>

您可以将StyleDataTrigger

<Button x:Name="EditButton">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Status}" Value="1">
                    <Setter Property="IsEnabled" Value="False" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM