2016-07-14 50 views
0

逗號分隔的文本框中給出一個固定數量的屬性的業務對象(人例如列表,並與性能的名字,姓氏,城市人的名單,系在列表框中

我想顯示每個並且能夠定義一個可以顯示的數據模式。

現在的問題:我不想顯示一個類似網格的結構,但希望只看到填充的文本框,並且它們應該被分隔開逗號:

「卡爾,米勒,芝加哥,法律」當所有字段都填滿後,但 當市和部門空的時候「Harry,Manning」 未設置姓氏和城市時,「Maria,IT」。

哪種方法可以選擇此任務? Regards

回答

0

使用觸發器。

<ListBox ItemsSource="{Binding MyObjects}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <StackPanel.Resources> 
        <Style TargetType="TextBlock" BasedOn="{DynamicResource x:Type TextBlock}"> 
         <Style.Triggers> 
          <Trigger Property="TextBlock.Text" Value=""> 
           <Setter Property="Visibility" Value="Collapsed" /> 
          </Trigger> 
          <Trigger Property="TextBlock.Text" Value="{x:Null}"> 
           <Setter Property="Visibility" Value="Collapsed" /> 
          </Trigger> 
         </Style.Triggers> 
        </Style> 
       </StackPanel.Resources> 
       <TextBlock Text="{Binding FirstName}" /> 
       <TextBlock Text="{Binding LastName}" /> 
       <TextBlock Text="{Binding City}" /> 
       <TextBlock Text="{Binding Department}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

這個解決方案沒有逗號,但我需要確切地知道你想讓它看起來像之前我真的可以建議什麼。

或者,使用MultiBindingIMultiValueConverter

+0

嗨,你的解決方案是正確的不顯示空的文本框。對於剩餘的可見文本框,我想用逗號分隔它們,以便在城市是empyt時獲得「Karl,Mayer,Legal」,當Firstname和Department爲空時,我得到「Miller,Chicago」 – klawusel

+0

而且我需要單個文本框的每個屬性,因爲我想要仍然可以編輯它們,所以任何使用匯總字符串的解決方案都不夠 – klawusel

0

解決了這個是這樣的: 在XAML我有這樣的結構:

...

  <local:CaptionedTextBox Caption="{x:Static p:Resources.EMail}" 
            Text="{Binding EMail.Value}" 
            Visibility="{Binding EMail.Value, 
                 Converter={StaticResource LengthToVisibilityConverter}}" /> 
      <local:SeparatorBox Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource LastFilledToVisibilityConverter}}" /> 

      <local:CaptionedTextBox Caption="{x:Static p:Resources.Mobile}" 
            Text="{Binding Mobile.Value, 
                UpdateSourceTrigger=PropertyChanged}" 
            Visibility="{Binding Mobile.Value, 
                 Converter={StaticResource LengthToVisibilityConverter}}" /> 
      <local:SeparatorBox Tag="HIDE" Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource LastFilledToVisibilityConverter}}" /> 

所以,基本上我有交替的文本和分隔的元素列表。

列表中的最後一個元素是TAG = HIDE的分隔符。

在轉換器中,我只將TAG設置爲不需要的分隔符設置爲隱藏,最後設置所有分隔符關於標籤的可見性。