私は8列のデータグリッドを含むXAMLウィンドウを持っています。これは2つのフラットファイルを読み込み、それらのファイルに含まれる値でデータグリッドを設定します。 (私はそれを行うためのコードは含まれていませんがうまく動作し、私の質問に関連していません。)ユーザーは、 "From"と "To"列の値を編集できますが、他人。現在のところ、ユーザーがセルをクリックすると、行全体が強調表示され(青色に)、クリックされたセルも太字の枠で強調表示されます。ユーザーが別のセルをクリックすると、何も起こりません(ただし、新しい行とセルが強調表示されます)。ユーザーがハイライト表示され、細胞に再びクリックするか、キーボードのキーを押した場合は、次のエラーを取得する:スローXAMLデータグリッドの値をユーザーが変更できるようにするにはどうすればよいですか?
例外:PresentationFramework.dll
の「System.InvalidOperationExceptionが」追加情報:「EditItem」をこのビューでは許可されていません。
私は間違っていますか?ここで
は、XAMLの定義である:ここで
<Window x:Class="CrewPlanEditor.Validate"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Check Duties" Height="571" Width="753" MinWidth="674" MinHeight="431" Background="#b3d9ff" Icon="CrewPLAN.ico">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<DataGrid x:Name="DgValidate" Grid.ColumnSpan="3" FontWeight="Normal" ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Width="60" Header="Crew" Binding="{Binding DutyNo}" />
<DataGridTextColumn Width="60" Header="Run" Binding="{Binding BusNo}" />
<DataGridTextColumn Width="60" Header="From" Binding="{Binding From}" />
<DataGridTextColumn Width="60" Header="To" Binding="{Binding To}" />
<DataGridTextColumn Width="60" Header="Brk" Binding="{Binding Next}" />
<DataGridTextColumn Width="60" Header="Type" Binding="{Binding DutyTypeName}" />
<DataGridTextColumn Width="60" Header="Depot" Binding="{Binding Depot}" />
<DataGridTextColumn Width="60" Header="Cost" Binding="{Binding Cost}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
は、その背後にあるC#のである:
using System.Windows;
using CrewPlanEditor.Contexts;
using IO = System.IO;
namespace CrewPlanEditor
{
/// <summary>
/// Interaction logic for Validate.xaml
/// </summary>
public partial class Validate
{
public Validate(string jobFolder)
{
var dutiesFile = IO.Path.Combine(jobFolder, "Data", "Duties.txt");
var dutyTypesFile = IO.Path.Combine(jobFolder, "Data", "DutyTypes.txt");
var duties = new DutiesFileReader().ReadFile(null, dutiesFile, dutyTypesFile).GridDutyData;
DataContext = duties;
InitializeComponent();
}
}
}