我嘗試使用綁定與附加屬性。但不能得到它的工作。WPF附加屬性數據綁定
public class Attached
{
public static DependencyProperty TestProperty =
DependencyProperty.RegisterAttached("TestProperty", typeof(bool), typeof(Attached),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | FrameworkPropertyMetadataOptions.Inherits));
public static bool GetTest(DependencyObject obj)
{
return (bool)obj.GetValue(TestProperty);
}
public static void SetTest(DependencyObject obj, bool value)
{
obj.SetValue(TestProperty, value);
}
}
的XAML代碼:
<Window ...>
<StackPanel local:Attached.Test="true" x:Name="f">
<CheckBox local:Attached.Test="true" IsChecked="{Binding (local:Attached.Test), Mode=TwoWay, RelativeSource={RelativeSource Self}}" />
<CheckBox local:Attached.Test="true" IsChecked="{Binding (local:Attached.Test), Mode=TwoWay}" />
</StackPanel>
</Window>
並且綁定錯誤:
System.Windows.Data Error: 40 : BindingExpression path error: '(local:Attached.Test)' property not found on 'object' ''StackPanel' (Name='f')'. BindingExpression:Path=(local:Attached.Test); DataItem='StackPanel' (Name='f'); target element is 'CheckBox' (Name=''); target property is 'IsChecked' (type 'Nullable`1')
我已經試過這個,並得到一個例外:Der Eigenschaftspfad istungültig。 「附件」besitzt keineöffentlicheEigenschaft mit dem Namen \「Test \」。 - > Engl:屬性無效。 「附加」不擁有公共屬性「測試」 – SACO 2011-04-29 13:07:16
「RegisterAttached」調用應通過「Test」,而不是「TestProperty」作爲屬性名稱。 – 2011-04-29 15:22:09
...對...好的,謝謝。現在一切正常。 – SACO 2011-05-02 08:36:36