0

我想使用WPF Spark 项目ToggleSwitch的控件

所以我创建了一个UserControl包含ToggleSwitch控件并对其进行配置(颜色、大小等)的控件。

<UserControl x:Class="WpfControls.ToggleSwitch.MyToggleSwitchControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:toggleSwitch="clr-namespace:WpfControls.ToggleSwitch"
             d:DesignHeight="300"
             d:DesignWidth="300"
             mc:Ignorable="d">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/WpfControls;component/ToggleSwitch/ToggleSwitch.Generic.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    <Grid>
        <toggleSwitch:ToggleSwitch x:Name="Toggle"
                                   Width="54"
                                   Height="21"
                                   Margin="0"
                                   Background="Black"
                                   BorderThickness="2"
                                   CheckedForeground="White"
                                   CheckedText="Yes"
                                   CheckedToolTip=""
                                   CornerRadius="10"
                                   FontFamily="Tahoma"
                                   FontSize="10"
                                   FontWeight="Normal"
                                   IsCheckedLeft="False"
                                   Padding="0"
                                   ThumbBorderThickness="2"
                                   ThumbCornerRadius="21"
                                   ThumbGlowColor="Gray"
                                   ThumbShineCornerRadius="20,20,0,0"
                                   ThumbWidth="35"
                                   UncheckedForeground="Black"
                                   UncheckedText="No"
                                   UncheckedToolTip="No">
        </toggleSwitch:ToggleSwitch>
    </Grid>
</UserControl>

ToggleSwitch是一个CustomControl覆盖标准 WPF 的ToggleButton

现在我想在我的 for Binding中使用该ToggleButton属性。IsCheckedXAML

<toggleSwitch:MyToggleSwitchControl IsChecked="{Binding IsChecked}" />

我怎样才能做到这一点?

4

2 回答 2

1

在代码隐藏中创建DependencyProperty

    public bool IsToggleChecked
    {
        get { return (bool)GetValue(IsToggleCheckedProperty); }
        set { SetValue(IsToggleCheckedProperty, value); }
    }
    public static readonly DependencyProperty IsToggleCheckedProperty =
        DependencyProperty.Register("IsToggleChecked", typeof(bool), typeof(MyToggleSwitchControl), new PropertyMetadata(false));

并将其绑定到IsChecked您的属性ToggleSwitch

<toggleSwitch:ToggleSwitch IsChecked="{Binding RelativeSource={RelativeSource AncestorLevel=1,AncestorType=UserControl,Mode=FindAncestor}, Path=IsToggleChecked}"

完成此操作后,您将能够:

<toggleSwitch:MyToggleSwitchControl IsToggleChecked="{Binding IsChecked}" />
于 2013-05-25T12:54:58.033 回答
1

您可以使用依赖属性。

在您的自定义控件中添加一个依赖属性,如下所示:

    public static readonly DependencyProperty IsCheckedProperty =
        DependencyProperty.Register("IsChecked", typeof(bool),
        typeof(MyToggleSwitchControl), null);

    // .NET Property wrapper
    public bool IsChecked
    {
        get 
        { 
            return (bool)GetValue(IsCheckedProperty); 
        }
        set { SetValue(IsCheckedProperty, value); }
    }
于 2013-05-25T13:00:12.023 回答