Estoy usando la cuadrícula de datos de wpf 4.0. Esto tiene una TemplateColumn que contiene una casilla de verificación. La propiedad IsChecked de la casilla de verificación se establece mediante enlace.wpf 4.0 plantilla de red de datos columna problema de enlace bidireccional
El problema es que incluso si especifico que el modo de encuadernación explícitamente sea TwoWay, funciona solo en una dirección.
Tengo que mencionar que el mismo código funciona perfectamente en .net 3.5 con la cuadrícula de datos del wpf toolkit.
Por favor, eche un vistazo a los contenidos .xaml y .cs.
Gracias de antemano,
Roland
<Window.Resources>
<DataTemplate
x:Key="IsSelectedColumnTemplate">
<CheckBox
IsChecked="{Binding Path=IsSelected, Mode=TwoWay}"
/>
</DataTemplate>
</Window.Resources>
<Grid>
<DataGrid
x:Name="dataGrid"
AutoGenerateColumns="false"
CanUserAddRows="False"
CanUserDeleteRows="False"
HeadersVisibility="Column"
ItemsSource="{Binding}"
>
<DataGrid.Columns>
<DataGridTemplateColumn
Header="Preselected"
x:Name="myIsSelectedColumn"
CellTemplate="{StaticResource IsSelectedColumnTemplate}"
CanUserSort="True"
SortMemberPath="Orientation"
Width="Auto"
/>
</DataGrid.Columns>
</DataGrid>
</Grid>
y el contenido de Cs relacionada:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<DataObject> DataSource = new ObservableCollection<DataObject>();
DataSource.Add(new DataObject());
DataSource.Add(new DataObject());
dataGrid.ItemsSource = DataSource;
}
}
public class DataObject : DependencyObject
{
public bool IsSelected
{
get { return (bool)GetValue(IsSelectedProperty); }
set { SetValue(IsSelectedProperty, value); }
}
// Using a DependencyProperty as the backing store for IsSelected. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsSelectedProperty =
DependencyProperty.Register("IsSelected", typeof(bool), typeof(DataObject), new UIPropertyMetadata(false, OnIsSelectedChanged));
private static void OnIsSelectedChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
// this part is not reached
}
}
Esto funciona bien, pero esto no está funcionando como se esperaba. Cuando escribe una letra, cambia el objeto de inmediato. ¿Qué sucede si tienes un disparador que dispara el controlador de validación? significa que dispara 1000 veces si escribe 1000 símbolos? Esto no está bien. – Dilshod
Esta podría ser una solución aceptable para rastrear el evento LostFocus. –
Vincent
@Dilshod ¿a qué te refieres con que disparará 1000 veces si uno escribe 1000 símbolos? estamos hablando de una casilla de verificación, ¿verdad? –