を受けている:WPFのDataGrid無効セルは、3つの列を持つ次のDataGridを考えるテキスト入力
年齢は今まで-1対応するセルが無効になったとき。
無効なセルの値を変更することは理想的ではありません。しかし、ユーザーが行1にあり、キーボードのフォーカスが列Ageの対応するセルにあり、Enterキーを押すと、ユーザーは任意の数値を入力し、無効なセルはその値を取得するとみなされます。これは望ましい行動ですか?どうすればこの問題を回避できますか?
問題を再現するには、次の
:Age列- 選択セルは
- 種類数
再現コードを入力してください
XAML:
<Window x:Class="wpf_behaviour.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DataGridDetailsSample" Height="200" Width="400">
<Grid Margin="10">
<DataGrid Name="dgUsers" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Id}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<DataGridTextColumn Header="Age" Binding="{Binding Age}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Age}" Value="-1">
<Setter Property="IsEnabled" Value="False"/>
<Setter Property="ToolTip" Value="This filed is diabled."/>
<Setter Property="Background" Value="LightGray"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Correspoinding CS:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Documents;
namespace wpf_behaviour
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<User> users = new List<User>();
users.Add(new User() { Id = 1, Name = "Kumar", Age = 10 });
users.Add(new User() { Id = 2, Name = "Sameer", Age = -1 });
users.Add(new User() { Id = 3, Name = "Danny", Age= 16 });
dgUsers.ItemsSource = users;
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
}
この記事を見http://stackoverflow.com/questions/37584559/datagridcheckboxcolumn-lose-is-on-application-style-when-applied-elementstyle –
@ S.Akbari設定 ' 'は役に立ちませんでした! –
Abbas