WPF DataGrid делает строки доступными только для чтения на основе свойства - PullRequest
0 голосов
/ 05 февраля 2020

Я связываю список объектов с DataGrid программно следующим образом:

gridAssetParameters.ItemsSource = asset.Parameters;

Параметры - это простой класс с тремя свойствами: Name, Value, Description и Editable. Столбцы генерируются автоматически при установке источника в asset.Parameters, однако проблема, с которой я сталкиваюсь, заключается в том, что я не могу сделать строку доступной только для чтения на основе свойства Editable. Я думал об использовании события ниже, чтобы вручную сделать строки доступными только для чтения, однако нет способа циклически просматривать сгенерированные строки или строки настроек как доступные только для чтения.

private void GridAssetParameters_AutoGeneratedColumns(object sender, EventArgs e)
{
   //Somehow loop through rows and enable/disable based on logic
}

Мне известно о MVVM, однако я не уверен, как его использовать в этом случае. Любой совет будет оценен!

ОБНОВЛЕНИЕ

Ответ на мой вопрос был найден здесь:

{ ссылка }

1 Ответ

0 голосов
/ 05 февраля 2020

Если вы хотите создать столбцы в XAML

<DataGrid ItemsSource="{Binding Path=Parameters}" 
          AutoGenerateColumns="False" 
          IsReadOnly="True" 
          Name="ResultGrid"> 
    <DataGrid.Resources>
        <Style TargetType="DataGridRow">
            <Setter Property="IsEnabled" Value="{Binding Editable}"/>
        </Style>
    </DataGrid.Resources>
    <DataGrid.Columns> 
        <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" Width="Auto"/> 
        <DataGridTextColumn Header="Value" Binding="{Binding Path=Value}" Width="*"/> 
        <DataGridTextColumn Header="Description" Binding="{Binding Path=Description}" Width="*"/> 
    </DataGrid.Columns> 
</DataGrid> 

Если вы хотите автоматически генерировать столбцы

<DataGrid ItemsSource="{Binding Path=Parameters}" 
          AutoGenerateColumns="True" 
          IsReadOnly="True" 
          Name="ResultGrid"> 
    <DataGrid.Resources>
        <Style TargetType="DataGridRow">
            <Setter Property="IsEnabled" Value="{Binding Editable}"/>
        </Style>
    </DataGrid.Resources>     
</DataGrid> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...