2010-06-14 8 views
1

DataGrid ColumnHeader에 사용하는 Window.Resource 섹션에 ContextMenu와 ColumnHeaderStyle이 정의되어 있습니다. 내 코드는 다음과 같은 것입니다 :WPF ContextMenu 일부 속성을 동일한 컨트롤의 다른 속성에 바인딩합니다.

<ContextMenu x:Key="cm_columnHeaderMenu"/> 

<Style x:Key="DefaultColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}"> 
    <Setter Property="ContextMenu" Value="{StaticResource cm_columnHeaderMenu}" /> 
</Style> 

<DataGrid Grid.Column="2" Grid.Row="1" x:Name="dgridFiles" IsReadOnly="True" 
ColumnHeaderStyle="{StaticResource DefaultColumnHeaderStyle}"> 

나는 내가 할 수 있는지 알고 싶어 (그리고 대답은 그것이 사실, 그때 나는 그것을 할 수있는 방법 경우) 동일한 제어의 ContextMenu Items.Count에의 ContextMenu 가시성 속성을 바인딩> 0 속성.

처음에는 다른 일부 treeView 컨트롤 선택을 기반으로 컨텍스트 메뉴에 항목이 없지만 treeView의 선택에 따라 ContextMenu에 dinamically 항목을 추가하고 싶습니다. 이 부분이 끝나면 컨텍스트에 해당 항목이 있습니다. 일부 선택 항목에는 항목이 없지만 여전히 그리드에는 빈 ContextMenu가 나타납니다. 그래서 Visibility를 같은 컨트롤의 Items.Count 속성에 바인딩하는 것이 가장 쉬운 부분이라고 생각합니다.

죄송합니다. 제 영어가 충분하지 않으면 죄송 합니다만 제 1면을 분명히하지 않으면 더 잘 설명하려고 노력할 것입니다.

답변

0

항목 수의 값을 부울 값으로 변환하려면 변환기를 사용해보십시오. 그래도 문제가 해결되지 않으면 그래서 당신은

<ContextMenu Visibility={Binding RelativeSource={RelativeSource Self}, 
Converter={StaticResource ItemsToVisibilityConverter}, Path=Items.Count}} /> 

같은 것을하게 될 겁니다, (그래도 어쨌든 컨버터가 필요하고, 이것은 직장에서 변환을 보여줍니다) 데이터 트리거와 함께이 시도 :

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8ad8c14-95aa-4ed4-b806-d0ae874a8d26/

+0

은'Items.Count' 길 – Amsakanna

+0

아에 의해 Visibility' 열거'로 변환하는, 멋진, 감사합니다 :) – Lunivore

2

RelativeSource, 특히 Self 모드를 통해 바인딩하고 싶습니다.
this 또는 this을 읽으면 목표를 달성 할 수있을 것입니다.

그러면 정수 값을 Visibility 속성의 일치하는 유형 및 값으로 변환하는 바인딩 변환기가 필요합니다. 간단한 자습서 here을 찾을 수 있습니다. 이 사용

감사

1

당신은 동일한 제어 당신은 또한 당신이 원하는 것을 달성하기 위해 컨버터를 사용할 필요가

Visibility="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}" 

의 속성에 바인딩 할 수 있습니다.

Just in case you need this

관련 문제