2014-11-12 5 views
0

그래서 한 사용자 컨트롤에서 이벤트를 호출하여 다른 이벤트를 수행해야합니다. 하지만 그렇게하려면 이벤트를 구독하는 컨트롤에 개체를 만들어야합니다. 객체가 없어도이를 수행 할 수 있습니까?생성자를 사용하지 않고 WPF에서 사용자 컨트롤간에 이벤트 만들기

일부 xaml 코드입니다.

이 컨트롤은 구독하고 변경해야합니다. 선택기는 일부 스타일이 포함 된 사용자 지정 목록 상자입니다.

<switch:Selector x:Name="ConfigSelector" Grid.Row="0" Grid.Column="0" SelectedConfigurationChangedEvent="SelectedConfigurationChangedEventOccured"></switch:Selector> 

이것은 이벤트를 호출하고 이전에 다른 사용자 컨트롤에 표시된 목록 상자로 작업을 수행해야하는 버튼입니다.

<Button Name="button" HorizontalAlignment="Right" Grid.Row="2" Grid.Column="0" Width="80" Padding="5,3" Margin="10,10,0,10" Content="Example" Click="OnButtonClick"></Button> 
+0

나는 그것이 가능하다고 생각합니다. 'UserControl'에'Button'을 넣으면 이벤트 코드를 쓰지 않고도 그 버튼의 레이아웃을 바꿀 수 있습니다. 따라서 UserControl에서도 가능해야한다고 생각합니다. 트리거 (Trigger)를 사용하여이를 수행 할 수 있습니다. 하지만 XAML 코드를 보여줄 수 있습니까? – Sjips

+0

명령을 사용해 보셨습니까? 이 RoutedCommand에 대한 좋은 후보 같아 – ShayD

+0

일부 코드를 추가했습니다 – Algirdyz

답변

0

내 조언은 명령을 사용하는 것입니다, 그들은 WPF에서 이것에 대한 primae 후보입니다

0

다른 버튼의 속성이 변경 왔을 때 버튼의 내용을 변경하려는 경우 그것은 당신이 트리거 사용하여 객체 않고이 작업을 수행 할 수 있습니다, 예를 들어, 가능 :이 예에서는

처럼를 내가 다른 단추의 IsEnabled 속성이 변경된 경우 한 단추의 내용을 변경하고 있습니다.

<Button > 
<Button.Style> 
<Style.Triggers> 
<DataTrigger Binding="{Binding ElementName=AnotherButtonName , Path=IsEnabled}" Value="False"> 
<Setter Property="Content" Value="Hi Hello"/> 
</Style.Triggers> 
</Button.Style> 
</Button> 

도움이 될 수도 있습니다.

+0

하지만 두 버튼이 동일한 사용자 컨트롤 권한에있는 경우에만 작동합니까? 그들이 다른 것들에 있다면? – Algirdyz

0

당신은 노출 해야한다는 (종속성 속성) 같은 UserControl

뭔가의 기능 :

이제
public partial class MyUserControl : UserControl 
{ 
    public string Text 
    { 
     get { return (string)GetValue(TextProperty); } 
     set { SetValue(TextProperty, value); } 
    } 
    public static readonly DependencyProperty TextProperty = 
     DependencyProperty.Register("Text", typeof(string), typeof(MyUserControl), 
     new PropertyMetadata((d, a) => ((MyUserControl)d).TextChanged())); 

    private void TextChanged() 
    { 
     someTextBlock.Text = Text; 
    } 
} 

당신이 MyUserControlMyUserControl.Text를 사용하여, 사용되는 창에 someTextBlock.Text 뭔가를 바인딩 할 수 있습니다 .

관련 문제