В моей программе у меня есть UserControl, который содержит DataGrid
, у которого есть ItemsSource
, связанный с ObservableCollection
. Для этого DataGrid
Мне нужно уметь отключать и серовывать определенные ячейки. Я хотел бы сделать это предпочтительно в C++, потому что мне может потребоваться изменить, какие ячейки это происходит во время выполнения. Я знаю, как использовать IsReadOnly
, но кажется, что я могу только переключать это для целого столбца. Это становится проблемой, потому что мои столбцы привязаны к данным, что затрудняет мне нацеливание на определенные ячейки сетки.Как отключить ячейку в DataGrid при привязке к ObservableCollection
С этим сказанным,
XAML:
<DataGrid ItemsSource="{Binding Model.Collection}" ... >
<DataGrid.Columns>
<!-- Row Number -->
<DataGridTextColumn Width="SizeToCells" IsReadOnly="True" Binding="{Binding rowNum}" />
<!-- Inputs -->
<DataGridTextColumn Width="SizeToCells" IsReadOnly="False" Header="Inputs" Binding="{Binding input}" />
<!-- Outputs -->
<DataGridTextColumn Width="SizeToCells" IsReadOnly="False" Header="Outputs" Binding="{Binding output}" />
</DataGrid.Columns>
</DataGrid>
Модель данных:
namespace Program.Data_Models
{
public class CartIO_Model : PropertyChangedBase
{
private string test1 = "One";
private string test2 = "Two";
private string test3 = "Three";
private string DISABLEDtest4 = "Four";
private string DISABLEDtest5 = "Five";
private ObservableCollection<collectionData> _collection;
public CartIO_Model()
{
Collection = new ObservableCollection<collectionData>();
Collection.Add(new collectionData() { rowNum = 0, input = test1, output = ""});
Collection.Add(new collectionData() { rowNum = 1, input = test2, output = ""});
Collection.Add(new collectionData() { rowNum = 2, input = "", output = test3 });
Collection.Add(new collectionData() { rowNum = 3, input = "", output = DISABLEDtest4 });
Collection.Add(new collectionData() { rowNum = 4, input = DISABLEDtest5, output = ""});
}
public ObservableCollection<collectionData> Collection
{...}
}
public class collectionData
{
public int rowNum { set; get; }
public string input { set; get; }
public string output { set; get; }
}
}
Где и как бы я контролировать, какие клетки включен/выключен? Это меня смущает, потому что IsEnabled
является признаком контроля вида, а не ObservableCollection
.
, на каком условии вы хотите, чтобы ваши ячейки были отключены .. в значении какого-либо свойства в классе collectionData? – Nitin
На самом деле зависит от того, какой переключатель выбран в другой модели ViewModel->. Это то, где я буду выполнять эти операции над «DataGrid»? –
извините, но я не понимаю, поэтому при выборе переключателя вы хотите отключить некоторые ячейки в datagrid .. но как вы решаете, какая из этих ячеек будет таковой. Wont, какая ячейка для отключения зависит от данных внутри них? – Nitin