2010-10-27 3 views
0

У меня есть ListView в моем XAML, и я пытаюсь подключить MultiBinding Converter.XAML Tool Tip Data Context и Multi Binding

<ListView 
Grid.Column="4" 
Grid.Row="1" 
Grid.RowSpan="5" 
Margin="8,0,8,8" 
HorizontalAlignment="Stretch" 
      Name="lvDisplayType" 
ItemsSource="{Binding Path=Types}" 
SelectedItem="{Binding Path=Current.Opt}" 
VerticalAlignment="Stretch" 
SelectionChanged="lvType_SelectionChanged" 
SelectionMode="Single" 
      ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <DockPanel 
    HorizontalAlignment="Center"> 
         <TextBlock 
    Text="{Binding Path=., Converter={StaticResource DisplayConverter}}" 
    HorizontalAlignment="Center" 
    Padding="6" 
    VerticalAlignment="Center" 
          TextWrapping="Wrap"> 
          <TextBlock.ToolTip> 
           <ToolTip DataContext="{Binding Path=Current}"> 
            <MultiBinding Converter="{StaticResource OptConverter}"> 
             <Binding Path="Opt" /> 
             <Binding Path="Type" /> 
            </MultiBinding> 
           </ToolTip> 
          </TextBlock.ToolTip> 
         </TextBlock>  
        </DockPanel> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

Код не работает это:

       <TextBlock.ToolTip> 
           <ToolTip DataContext="{Binding Path=Current}"> 
            <MultiBinding Converter="{StaticResource OptConverter}"> 
             <Binding Path="Opt" /> 
             <Binding Path="Type" /> 
            </MultiBinding> 
           </ToolTip> 
          </TextBlock.ToolTip> 

В настоящее время преобразователь возвращается в пустую строку как 'значений [0] == System.Windows.DependencyProperty.UnsetValue' и «значения [ 1] == System.Windows.DependencyProperty.UnsetValue 'return true. Эти значения никогда не устанавливаются.

Из-за логического дерева (я думаю) привязка по умолчанию TextBlock.ToolTip - Current.Opt. Для MultiBinding мне также нужно обратиться к «Тип», который является другим свойством «Текущий». Поэтому, чтобы обойти это, я установил «ToolTip DataContext =» {Binding Path = Current} »- это не работает должным образом - что я делаю неправильно?

Я знаю, что мог бы сделать это легко в коде позади, но мы используем MVVM, поэтому хотели бы избежать его, если это возможно.

Любая помощь очень ценится!

Спасибо

ответ

1

Попробуйте сделать это таким образом,

1.Does это даст DependencyProperty.UnsetValue в конвертер? В противном случае, что входит в конвертер?

<TextBlock.ToolTip> 
    <MultiBinding Converter="{StaticResource OptConverter}"> 
     <Binding RelativeSource="{RelativeSource Self}" /> 
     <Binding RelativeSource="{RelativeSource Self}" /> 
    </MultiBinding> 
</TextBlock.ToolTip> 

2.Does это дает DependencyProperty.UnsetValue в конвертере?

<TextBlock.ToolTip> 
    <MultiBinding Converter="{StaticResource OptConverter}"> 
     <Binding RelativeSource="{RelativeSource Self}" Path="Current"/> 
     <Binding RelativeSource="{RelativeSource Self}" Path="Current"/> 
    </MultiBinding> 
</TextBlock.ToolTip> 
+0

Спасибо за ваш ответ. Все еще не работает. Это должно быть связано с DataContext. Heres a Example: Элемент списка ListView - это «ItemsSource =» {Binding Path = Types} », далее далее у меня есть текст TextBlock как: Текст =" {Binding Path =.} "// This Works Текст = "{Binding Path = DisplayTypes}" // Это не: -/ Любые указатели? Большое спасибо –

+0

Извините, это должно прочитать: Спасибо за ваш ответ. Все еще не работает. Это должно быть связано с DataContext. Вот пример: Мой источник элементов ListView - «ItemsSource =» {Binding Path = Types} », затем далее у меня есть TextBlock Text как: Text =" {Binding Path =.} "// This Works Text =" {Binding Path = Types} "// Это не означает: -/Любые указатели? Большое спасибо - –

+0

На основе информации немного сложно сказать, я действительно не знаю, что еще происходит. Но когда я пытаюсь сделать это ItemsSource = "{Binding =.}", Я получаю значение "{Binding =.}" "Не является допустимым выражением MarkupExtension. Не удается решить 'Binding = .'... Вы должны просто использовать Text = «{Binding}» там, что означает, что вы привязываетесь непосредственно к своему DataContext, а не к нему. –