2 özellikli olan DataTemplate
Sütun 2 DatePickers
var. Bu kontrolde veriler değiştirildiğinde ben Başlangıç ve Bitiş hem Sadece nedeniyle güncellenir güncellemek durumunda sadece son kontrol Bu durumda Veri Şablonu sütununda yalnızca son kontrol güncelleniyor
<sdk:DataGridTemplateColumn Width="300" CanUserReorder="False" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid MouseRightButtonDown="ActionsGrid_MouseRightButtonDown" Width="300" Height="40" MouseLeftButtonDown="ActionsGrid_MouseLeftButtonDown">
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Stretch" Width="100" Text="{Binding Start, Converter={StaticResource DateConverter}}"
Padding="2" HorizontalAlignment="Center" />
<TextBlock VerticalAlignment="Stretch" Width="100" Text="{Binding Due, Converter={StaticResource DateConverter}}"
Padding="2" HorizontalAlignment="Center" />
</StackPanel>
</Grid>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
<sdk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<sdk:DatePicker VerticalAlignment="Top" Width="100" SelectedDate="{Binding Start, Mode=TwoWay,}" Padding="2" />
<sdk:DatePicker VerticalAlignment="Top" Width="100" SelectedDate="{Binding Due, Mode=TwoWay, ValidatesOnDataErrors=True}" Padding="2" />
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
</sdk:DataGridTemplateColumn>
güncellenir. Ayrıca bağlama çalışmaları ince benim Modeli sınıfında Başlat bir kesme noktası koyarsanız çünkü vurmak ama geçti değerini öğrendim bazı ayıklama sonra Başlat
orijinal değeri
DÜZENLEME 1
olduğunu alırsa o Benim sadece DataTemplate
'umda bir kontrolüm var. Ayrıca Tarihi değiştirdiğimde Kırılma noktası çok çarpıyor. Fakat birden fazla kontrolüm varsa, noktalama noktası sütun dışına çıkana kadar vurulmaz ve sonra sadece son ciltleme çalışır.
Ben sadece CellTemplate
kullanmak ve hücre atmak eğer iyi çalışır fark bazı mroe ayıklama sonra DÜZENLEME 2
EditTemplate
<sdk:DataGridTemplateColumn Width="300" CanUserReorder="False" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<sdk:DatePicker VerticalAlignment="Top" Width="100" SelectedDate="{Binding Start, Mode=TwoWay,}" Padding="2" />
<sdk:DatePicker VerticalAlignment="Top" Width="100" SelectedDate="{Binding Due, Mode=TwoWay, ValidatesOnDataErrors=True}" Padding="2" />
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
</sdk:DataGridTemplateColumn>
DÜZENLEME 3
private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
(sender as DatePicker).GetBindingExpression(DatePicker.SelectedDateProperty).UpdateSource();
}
Her iki kontrolde de bağlamayı yenilemeyi başardım. selectedDatechange
olayı ve ardından gönderen üzerindeki bağları yenileme.
Hala 2 yollu bağlama çalışmasının neden çalışmadığından emin değilim.
Bunun neden olduğunu açıklayabilir mi?
DÜZENLEME 4
Modeli ve Özellikleri
public DateTime? Start
{
get { return _Start; }
set
{
_Start = value; Dirty = true;
if (_Start.HasValue && _Due.HasValue && _Start.Value > _Due.Value)
_dataErrors["Start"] = "Start date cannot be greater than the Due date";
else
if (_dataErrors.ContainsKey("Start"))
_dataErrors.Remove("Start");
NotifyPropertyChanged(); NotifyPropertyChanged("CalcStatus");
}
}
public DateTime? Due
{
get { return _Due; }
set
{
_Due = value; Dirty = true;
if (_Start.HasValue && _Due.HasValue && _Start.Value > _Due.Value)
_dataErrors["Start"] = "Start date cannot be greater than the Due date";
else
if (_dataErrors.ContainsKey("Start"))
_dataErrors.Remove("Start");
NotifyPropertyChanged("Due"); NotifyPropertyChanged("CalcStatus");
}
}
İlgili viewmodel özelliklerini gösterir. Mülk değişikliği bildirimini düzgün uyguluyor musunuz? – Nkosi
Evet Ben, görünüm modeli INotifyPropertyChanged Olayı uygular ve şablonda yalnızca bir denetim varsa, ne tür bir özelliği bağlı olduğu önemli değil. Birden fazla kontrol durumunda sadece sonuncusu güncellenir.Garip olan şey, başka bir hücre veya sütun seçtiğimde NotifyPropertyChanged'in çağrılması ve daha sonra yalnızca son denetimi güncelleştirmesidir, diğer özellikler de vurulur, ancak geçen değer varolan değerle aynıdır. –
Neden Silverlight ise bir WPF etiketi var? :) BTW UpdateSourceTrigger PropertyChanged desteklenen (veya kullanışlı) nedir? –