OneWayToSource salt okunur özelliğinden bağlama XAML
Modu OneWayToSource 11 *bir özellik bağlanmaya çalışıyorum, ama bu olamaz XAML yapılması gibi görünüyor:
<controls:FlagThingy IsModified="{Binding FlagIsModified,
ElementName=container,
Mode=OneWayToSource}" />
Anlıyorum:
Özelliği 'FlagThingy.'Ulaşılabilir bir set olmadığı için set erişimci. İsModified
IsModified okuma FlagThingy DependencyProperty. Kap FlagIsModified özelliği bu değeri bağlamak istiyorum.
Temiz olması için:
FlagThingy.IsModified --> container.FlagIsModified
------ READONLY ----- ----- READWRITE --------
Bu mümkün kullanarak sadece XAML?
Güncelleme:İyi, FlagThingy üzerinde konteyner bağlama ayarlayarak ve bu durumda tamir ettim. Ama yine de eğer bu mümkün olup olmadığını bilmek istiyorum.
CEVAP
Biraz araştırma OneWayToSource için sonuçlar
Seçenek # 1.
// Control definition
public partial class FlagThingy : UserControl
{
public static readonly DependencyProperty IsModifiedProperty =
DependencyProperty.Register("IsModified", typeof(bool), typeof(FlagThingy), new PropertyMetadata());
}
<controls:FlagThingy x:Name="_flagThingy" />
// Binding Code
Binding binding = new Binding();
binding.Path = new PropertyPath("FlagIsModified");
binding.ElementName = "container";
binding.Mode = BindingMode.OneWayToSource;
_flagThingy.SetBinding(FlagThingy.IsModifiedProperty, binding);
Seçenek # 2
// Control definition
public partial class FlagThingy : UserControl
{
public static readonly DependencyProperty IsModifiedProperty =
DependencyProperty.Register("IsModified", typeof(bool), typeof(FlagThingy), new PropertyMetadata());
public bool IsModified
{
get { return (bool)GetValue(IsModifiedProperty); }
set { throw new Exception("An attempt ot modify Read-Only property"); }
}
}
<controls:FlagThingy IsModified="{Binding Path=FlagIsModified,
ElementName=container, Mode=OneWayToSource}" />
Seçenek # 3 (salt okunur bağımlılık özelliği True)
Sistem.ArgumentException: '' özelliği veriye bağlı olamaz. İsModified
// Control definition
public partial class FlagThingy : UserControl
{
private static readonly DependencyPropertyKey IsModifiedKey =
DependencyProperty.RegisterReadOnly("IsModified", typeof(bool), typeof(FlagThingy), new PropertyMetadata());
public static readonly DependencyProperty IsModifiedProperty =
IsModifiedKey.DependencyProperty;
}
<controls:FlagThingy x:Name="_flagThingy" />
// Binding Code
Same binding code...
Reflektör cevap verir:
internal static BindingExpression CreateBindingExpression(DependencyObject d, DependencyProperty dp, Binding binding, BindingExpressionBase parent)
{
FrameworkPropertyMetadata fwMetaData = dp.GetMetadata(d.DependencyObjectType) as FrameworkPropertyMetadata;
if (((fwMetaData != null) && !fwMetaData.IsDataBindingAllowed) || dp.ReadOnly)
{
throw new ArgumentException(System.Windows.SR.Get(System.Windows.SRID.PropertyNotBindable, new object[] { dp.Name }), "dp");
}
....

İki yönlü veya OneWayToSource bağlama ...
İterek salt okunur özellikleri ViewMod...
Nasıl salt okunur bir dosya silebiliri...
Nasıl PostgreSQL içinde salt okunur bi...
Ekle "salt okunur" <input...