2014-11-04 32 views
0
<TextBox x:Name="DescriptionTextBox" 
      Text="{Binding SelectedEntity.Description, 
          ValidatesOnExceptions=True}"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="LostFocus" SourceName="DescriptionTextBox"> 
       <ei:CallMethodAction MethodName="RaiseCanExecuteChanged" 
       TargetObject="{Binding Command, ElementName=SaveButton}" /> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </TextBox> 

    <userControls:SaveCloseUserControl /> 

這裏面用戶控制WPF中,如何找到元素名稱從一個用戶控件在另一個

<StackPanel HorizontalAlignment="Right" Orientation="Horizontal"> 
    <Button Width="50" 
      Command="{Binding SaveCommand}" 
      Content="Save" /> 
    <Button Width="50" 
      Command="{Binding CloseCommand}" 
      Content="Close" /> 
</StackPanel> 

這裏的問題是,這個TargetObject =「{綁定命令,的ElementName = SaveButton}」不找到SaveButton是因爲它在userControls裏面:SaveCloseUserControl 我在網上看,我發現了一個需要隱藏代碼的解決方案(從2009年開始),今天有沒有簡單的方法來做這件事? 問候

編輯

基於@huzle回答我這樣做的代碼的用戶控制

public object CreateButton { get { return CreateChild; } } 

的後面,在XAML我添加了一個名字保存按鈕。

所以我最終版本看起來像這樣

<TextBox x:Name="DescriptionTextBox" 
      Text="{Binding SelectedEntity.Description, 
          ValidatesOnExceptions=True}"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="LostFocus" SourceName="DescriptionTextBox"> 
       <ei:CallMethodAction MethodName="RaiseCanExecuteChanged" 
       TargetObject="{Binding CreateButton.Command,ElementName=MySaveCloseUserControl}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </TextBox> 

    <userControls:SaveCloseUserControl x:Name="MySaveCloseUserControl"/> 

回答

1

給你的「SaveCloseUserControl」公共屬性的「SaveButton」命名爲「InnerSaveButton」,並與的ElementName綁定到SaveCloseUserControl和使用的路徑前往內部按鈕的命令。

<TextBox x:Name="DescriptionTextBox" 
     Text="{Binding SelectedEntity.Description, 
         ValidatesOnExceptions=True}"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="LostFocus" SourceName="DescriptionTextBox"> 
      <ei:CallMethodAction MethodName="RaiseCanExecuteChanged" 
      TargetObject="{Binding InnerSaveButton.Command, ElementName=MySaveCloseUserControl}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</TextBox> 

<userControls:SaveCloseUserControl X:Name="MySaveCloseUserControl"/> 
相關問題