2012-12-18 5 views
3

ListBox의 선택에 따라 Button을 사용하거나 사용하지 않도록 설정하려고합니다. 값을 선택하면 버튼이 활성화되어 있어야합니다.
나는 트리거를 사용하려고하지만, 그것은 나에게 오류TargetName을 인식하지 못했습니다.

'targetName을 인식 할 수 없습니다'를주고있다.

<UserControl x:Class="Qualification.View.QualificationView" 
      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" 
      mc:Ignorable="d" 
      Height="500" Width="500"> 
    <Grid> 
     <Button Name="btnOpen" Command="Open" CommandParameter="{Binding ElementName=lstName, Path=SelectedValue}" Height="23" Width="100" Margin="259,325,141,152">Add Qualification</Button> 
     <Grid.CommandBindings x:Uid="key"> 
      <CommandBinding Command="Open" CanExecute="CommandBinding_CanExecute" Executed="CommandBinding_Executed"/> 
     </Grid.CommandBindings> 
     <Grid.Resources> 
      <Style TargetType="{x:Type TextBox}"> 
       <Style.Triggers> 
        <Trigger Property="Validation.HasError" Value="true"> 
         <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, 
           Path=(Validation.Errors)[0].ErrorContent}"/> 
        </Trigger> 
       </Style.Triggers>     
      </Style> 
      <DataTemplate x:Key="eble"> 
       <DataTemplate.Triggers> 
        <DataTrigger Binding="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent}}" Value="True"> 
         <Setter TargetName="btnOpen" Property="IsEnabled" Value="False"/> 
        </DataTrigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 
     </Grid.Resources> 
     <Label Height="23" Width="100" Margin="17,35,383,442" RenderTransformOrigin="0.48,-3.217">Search</Label> 
     <TextBox Name="txtSearch" Text="{Binding Qm.Search, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" Height="23" Width="122" Margin="103,37,0,440" HorizontalAlignment="Left"></TextBox> 
     <Button Name="btnGo" Height="22" Width="30" Margin="205,37,265,441" RenderTransformOrigin="0.633,-1.318" Click="Button_Click_1">Go</Button> 
     <ListBox Name="lstName" ItemsSource="{Binding DocList}" Width="218" Margin="17,82,265,152"> 
     </ListBox> 
     <!--<Button Command="{Binding AddQual}" CommandParameter="{Binding ElementName=lstName, Path=SelectedValue}" Height="23" Width="100" Margin="259,325,141,152">Add Qualification</Button>--> 
    </Grid> 
</UserControl> 

답변

6

이 작업을 처리하여 버튼의 스타일을 만들 수 있습니다.

<Style x:Key="EnableButtonStyle" TargetType="Button"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=SelectedItem, ElementName=yourListBox}" Value="{x:Null}"> 
       <Setter Property="IsEnabled" Value="False"></Setter> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

그런 다음 당신은 당신의 버튼에 바인딩 :

<Button Style="{DynamicResource ResourceKey=EnableButtonStyle}"/> 
관련 문제