usercontrol在其他用户控件中。如何使用属性?

时间:2016-02-10 16:47:41

标签: c# wpf user-controls

我在内部有多个元素(切换,按钮,文本框等)创建了一个usercontrol。我在另一个内部使用此usercontrol,并在运行时和最终应用程序中加载此最终用户控件。我对依赖属性有点遗失,我想从我的应用程序中访问第一个属性。

第一个用户控件被称为" Ch_Parameters" :

<UserControl
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:CustomControlTest"
         xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="CustomControlTest.ChannelParameters"
         mc:Ignorable="d" 
         x:Name="Ch_Parameters"
         d:DesignHeight="247.465" d:DesignWidth="436.624">

我试图首先与&#34; Ch_Parameters&#34;中包含的切换按钮进行通信。及其属性&#34; IsChecked&#34;

<ToggleButton x:Name="Flip_X" Content="FLIP X" Style="{DynamicResource BaseToggleButtonStyle}" IsChecked="{Binding Path=DataContext.Flip_X, ElementName=Ch_Parameters, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

这是属性的代码

        public static readonly DependencyProperty FlipXProperty =
    DependencyProperty.Register("FlipX", typeof(bool), typeof(ChannelParameters), new PropertyMetadata(true));

    [Bindable(true)]
    public bool FlipX
    {
        get { return (bool)this.GetValue(FlipXProperty); }
        set { this.SetValue(FlipXProperty, value); }
    }

现在,这个用户控件用于另一个名为cmix的用户控件:

         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:CustomControlTest"
         x:Name="cmix"
         xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="CustomControlTest.C_MiX_UserInterface"
         mc:Ignorable="d" d:DesignWidth="674.669" d:DesignHeight="337.953">

这里:

<local:ChannelParameters FlipX="{Binding Path=Datacontext.VidFlipX, ElementName=cmix, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

和cmix属性的代码:

        public static readonly DependencyProperty VidFlipXProperty =
    DependencyProperty.Register("VidFlipX", typeof(bool), typeof(C_MiX_UserInterface), new PropertyMetadata(true));

    [Bindable(true)]
    public bool VidFlipX
    {
        get { return (bool)this.GetValue(VidFlipXProperty); }
        set { this.SetValue(VidFlipXProperty, value); }
    }

但是,当我使用usercontrol&#34; cmix&#34;并在运行时加载它,当我触发切换按钮时,来自Ch_Parameters usercontrol的属性FLIPX没有输出任何内容。

var uiElement = (C_MiX_UserInterface)UIElementOut[i];
var toggle = uiElement.VidFlipX;

是否有一种特定的方法可以在其他用户控件中使用来自usercontrol的属性?

1 个答案:

答案 0 :(得分:0)

这是对我有用的解决方案,因为我实际上遇到了完全相同的问题:

Binding DependencyProperty in nested user controls

相关问题