2016-02-10 3 views
0

Я сделал usercontrol с несколькими элементами внутри (переключатели, кнопка, текстовое поле и т. Д.). Я использую этот usercontrol внутри другого и загружаю этот конечный пользовательский контроль во время выполнения и в мое окончательное приложение. Я немного потерял свойство зависимости, я хотел бы получить доступ к свойствам самого первого из моего приложения.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"> 

Я пытаюсь первым общаться с тумблером, содержащимся в "Ch_Parameters" и его свойство "IsChecked"

<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); } 
    } 

Теперь этот usercontrol используется i п другой называется 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 "CMIX" и загрузить его во время выполнения свойство FLIPX из пользовательского управления Ch_Parameters не выводит ничего, когда я запускаю кнопку переключения.

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

Есть ли специальный способ использования свойств пользовательского контроля внутри другого пользовательского контроля?

ответ