我在内部有多个元素(切换,按钮,文本框等)创建了一个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的属性?
答案 0 :(得分:0)
这是对我有用的解决方案,因为我实际上遇到了完全相同的问题: