2017-08-26 82 views
4

我試圖將兩個值綁定到一個標籤的內容中,並在中間有一個空格。我正在關注MSDN的一個例子(MSDN Article),但我的標籤是空的。下面是我的代碼有:WPF Multibinding無法正常工作 - 標籤爲空

類:

public class Item 
{ 
    //Other properties removed to shorten 
    public string name { get; set; } 
    public string typeLine { get; set; } 
} 

設置項目來源:

ItemsDisplay.ItemsSource = searchResults; 

XAML:

<ItemsControl Name="ItemsDisplay"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 

      <Grid> 
       <!-- COLUMN DEFINITIONS ETC REMOVED TO SHORTEN --> 

       <StackPanel Grid.Column="1"> 
        <Label Name="ItemName" Margin="10"> 
         <Label.Content> 
          <MultiBinding StringFormat="{}{0} {1}"> 
           <Binding Path="name" /> 
           <Binding Path="typeLine" /> 
          </MultiBinding> 
         </Label.Content> 
        </Label> 

       </StackPanel> 

      </Grid> 

     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

如果我綁定一個值它完美例如

   <StackPanel Grid.Column="1"> 
       <Label Name="ItemName" Margin="10" Content="{Binding Path=name}" /> 
       <Label Name="ItemType" Margin="10" Content="{Binding Path=typeLine}" /> 
      </StackPanel> 

所以它似乎不是檢索值的問題。

回答

2

您不能設置MultiBinding白色MultiValueConverter

試試這個:

<ItemsControl Name="ItemsDisplay"> 
    <ItemsControl.Resources> 
     <local:MyMultiConv x:Key="MyConv"/> 
    </ItemsControl.Resources> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <!-- COLUMN DEFINITIONS ETC REMOVED TO SHORTEN --> 
         <StackPanel Grid.Column="1"> 
          <Label Name="ItemName" Margin="10"> 
           <Label.Content> 
            <MultiBinding Converter="{StaticResource MyConv}"> 
             <Binding Path="name" /> 
             <Binding Path="typeLine" /> 
            </MultiBinding> 
           </Label.Content> 
          </Label> 
         </StackPanel> 
        </Grid> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
</ItemsControl> 

器和轉換器:

public class MyMultiConv : IMultiValueConverter 
    { 
     public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
     { 
      return string.Format("{0} {1}", values[0], values[1]); 
     } 

     public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 

編輯

如果結合直接 「TextProperty」 你actualy可以:

<Textblock Name="ItemName" Margin="10"> 
     <Textblock.Text> 
       <MultiBinding StringFormat="{}{0} {1}"> 
        <Binding Path="name" /> 
        <Binding Path="typeLine" /> 
       </MultiBinding> 
     </Textblock.Text> 
</Textblock> 
+0

謝謝你的回覆。它現在告訴我「本地:MyMultiConv」沒有找到。 – Daniel

+0

我有我的MyMultiConv在WpfApp5 napesapce,所以我本地在xaml是: xmlns:local =「clr-namespace:WpfApp5」 – sTrenat

+0

我已經把轉換器放在命名空間關閉括號哈哈。謝謝你的工作。 – Daniel