2009-10-20 7 views
0

각기 LabelName 및 LabelColor에 바인딩 된 레이블의 목록 상자가 있습니다. 나는 "X"와 유사한 작은 버튼을 추가하여 Label의 오른쪽에 붙이고 싶습니다. X가 매우 방해가되지 않는 것처럼 완벽하게 보이기를 원합니다. 어떤 아이디어가 이것을 어떻게? <Label.ContentTemplate> 사이의 항목이 작동하지 않습니다. 나는 클릭 할 수있는 버튼처럼 보이기를 원하지 않습니다. 버튼 클릭 이벤트에서 발생하는 클릭 만 할 수있는 "X"입니다.WPF 레이블에 단추 넣기

<DataTemplate x:Key="LabelsListDataTemplate"> 
     <Border> 
      <StackPanel Orientation="Horizontal"> 
       <Label Margin ="3,5,3,5" BorderThickness="1" BorderBrush="Black" 
          Background="{Binding Path=DefaultColor}" 
          Content="{Binding Path=LabelName}"> 
        <Label.ContentTemplate> 
         <DataTemplate> 
          <Button Background="{Binding Path=DefaultColor}" Content="X" /> 
         </DataTemplate> 
        </Label.ContentTemplate> 
       </Label> 
      </StackPanel> 
     </Border> 
    </DataTemplate> 

답변

1

왜 컨트롤 템플릿에 버튼을 추가하겠습니까? 아래 코드가 작동하는지 확인하십시오.

<DataTemplate x:Key="LabelsListDataTemplate"> 
    <Border> 
     <StackPanel Orientation="Horizontal"> 
      <Label Margin ="3,5,3,5" BorderThickness="1" BorderBrush="Black" 
         Background="{Binding Path=DefaultColor}" 
         Content="{Binding Path=LabelName}"/> 
       <Button Background="{Binding Path=DefaultColor}" Content="X" />    
     </StackPanel> 
    </Border> 
</DataTemplate> 
+0

나는 Jobi Joy에 동의합니다. 코드를 사용하면 실제로 레이블에 단추 대신 텍스트 및 단추가 있어야합니다. 버튼에 방해가되지 않게하려면 ControlTemplate을 변경해야합니다. – user112889

+0

덕분에 아래의 마이너 조정과 함께 구현을 사용했습니다! – Shafique

0

우수합니다.

<DataTemplate x:Key="LabelsListDataTemplate"> 
    <Border> 
     <StackPanel Orientation="Horizontal"> 
      <Label Margin ="3,5,0,5" BorderThickness="1" BorderBrush="Black" Name="RowLabel" 
         Background="{Binding Path=DefaultColor}" 
         Content="{Binding Path=LabelName}"></Label> 
      <Button Background="{Binding Path=DefaultColor}" Content="X" Height="{Binding ElementName=RowLabel, Path=ActualHeight}" 
        Margin="0,5,3,5" /> 
     </StackPanel> 
    </Border> 
</DataTemplate> 

나는 기본적으로의 높이로 버튼의 높이를 다음과 같이 나는 조금 더 높이 및 레이블 자체보고 자연을 표시하기 위해 "X"버튼을 얻을 그것을 조금 불통 라벨. 그런 다음 다른 사람 옆에 바로 나타나게하려면 약간의 마진을 냈습니다. 도와 주셔서 감사합니다!

+0

StackPanel 대신 Grid를 사용하여 ActualHeight 요소를 바인딩 할 것을 제안합니다. –