2016-08-10 6 views
0

のはxamlてみましょう:2 lines500pxUniformGrid知見と窓の高さならばリストボックスに表示状態を実装する方法を

<ListBox> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid IsItemsHost="True" Rows="2"></UniformGrid> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

、さらにその後、700px3 lines場合。これを実装する方法は?

答えて

1

複数の可能性があります。ビューに結合し、イベント使用して最も簡単:

public partial class MainWindow : Window, INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    public void OnPropertyChanged(string property = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); 

    public int Rows { get; private set; } = 3; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 
    } 

    void ListBox_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     Rows = ((ListBox)sender).ActualHeight > 700 ? 4 : 3; 
     OnPropertyChanged(nameof(Rows)); 
    } 
} 

XAML:

<ListBox SizeChanged="ListBox_SizeChanged"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="{Binding Rows}" /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBoxItem>1</ListBoxItem> 
    <ListBoxItem>2</ListBoxItem> 
    <ListBoxItem>3</ListBoxItem> 
    <ListBoxItem>4</ListBoxItem> 
    <ListBoxItem>5</ListBoxItem> 
    <ListBoxItem>6</ListBoxItem> 
    <ListBoxItem>7</ListBoxItem> 
    <ListBoxItem>8</ListBoxItem> 
</ListBox> 

ListBoxのサイズを大きく超える700

したら、それは3〜4行の切り替え方法を表示するには、ウィンドウのサイズを変更
関連する問題