2016-07-19 7 views
0

私は、可視性が最初に折りたたみに設定され、後者がバインディングによって可視に設定されている場合、画像が表示されないという奇妙な状況に遭遇しています。折りたたまれた後に画像が表示されない

<ListView Grid.Row="0" ItemsSource="{Binding SystemCheckEntries}"> 
      <GridViewColumn DisplayMemberBinding="{Binding State}" /> 
      <GridViewColumn> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <Image Source="info.png" 
           Height="14" 
           ToolTip="{Binding Message}" 
           Visibility="{Binding Message, Converter={StaticResource StringNullOrEmptyToVisibilityConverter}}"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

コンバータ:

public class StringNullOrEmptyToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return string.IsNullOrEmpty((string) value) ? Visibility.Collapsed : Visibility.Visible; 
    } 

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

私は、コンバータでVisibility.Collapsedを使用した場合、結果は
enter image description here

のように見え、私は画像
のプロパティをチェックするビジュアルツリーを開く場合enter image description here
"Visible"(しかし明らかにそうではない)

私は、コンバータでVisibility.Hiddenを使用する場合、結果は私が望んでいたまさにです
enter image description here

のように見えます。しかし、私はアイコンが表示されていないときに余分なスペースを取ることを望んでいません。

これはどうしてですか?

+0

同様の最小限の例を設定しても問題ありません。 –

答えて

1

最初の項目は幅がない(折りたたまれているため)、ListViewは列幅を0に設定します。画像がある新しい項目が追加されますが、列に幅がないため表示されません。

:この動作を確認しました。

+0

ウィンドウがレンダリングされた後、サイズを50x50に設定しようとしました。表示レイアウトの崇拝者を有効にしました。私は50x50のボックスをはっきりと見ることができますが、画像やツールチップは表示されません – Steve

+0

50x50のサイズは何ですか?とにかく固定サイズを設定すると、「Collapsed」のポイントは何ですか? –

+0

theresは、ブラウザのように実行時に要素のプロパティを変更できるvs2015の新しいツールです。実行時に画像のサイズが変更され、まだ表示されない – Steve

関連する問題