我希望在我的项目中有一个动态状态栏
因此,我将ItemSource设置为绑定
<StatusBar ItemsSource="{Binding StatusBarItemsSource}" DockPanel.Dock="Bottom" >并在我的主视图模型中创建了一个BindingList
public static BindingList<StatusBarItem> StatusBarItemsSource { get; set; }在初始化时,我将我的徽标添加到右下角
StatusBarItem logo = new StatusBarItem
{
HorizontalAlignment = HorizontalAlignment.Right,
Content = new Image
{
Source = new BitmapImage(new Uri("Logo.ico", UriKind.Relative)),
Width = 16,
Height = 16
}
};
StatusBarItemsSource.Add(logo);

到目前为止,徽标出现在右边的角落。
但
如果我想在另一个视图中添加另一个StatusBarItem以显示左侧视图的和文本,则徽标也会显示在左侧。
MainViewModel:
public static void AddItemToStatusBar(Object content, HorizontalAlignment alignment = HorizontalAlignment.Stretch)
{
StatusBarItem statusBarItem = new StatusBarItem
{
HorizontalAlignment = alignment,
Content = content
};
StatusBarItemsSource.Add(statusBarItem);
}另一个ViewModel:
TextBlock someTextBlock = new TextBlock { Text = someString };
MainViewModel.AddItemToStatusBar(someTextBlock , System.Windows.HorizontalAlignment.Left);

然后我在堆栈溢出上发现了将网格设置为模板How do I customize the WPF StatusBar layout?的可能性。
所以我把这个添加到我的代码中:
<StatusBar ItemsSource="{Binding StatusBarItemsSource}" DockPanel.Dock="Bottom" >
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
</StatusBar>如何在XAML中定义列是很清楚的。
<StatusBarItem Grid.Column="3">
<TextBlock>some String</TextBlock>
</StatusBarItem>,但是如何在我的视图模型中做到这一点呢?
我尝试过类似statusBarItem.Grid.Column = 3 / "3"或statusBarItem.Grid.SetColumn之类的东西,但没有成功。
我希望你能帮助我,这个小小的问题还没有得到很大的重视。
发布于 2018-01-25 16:41:12
Grid.SetColumn没那么坏,但我用错了
它现在就是这样运作的:
StatusBarItem logo = new StatusBarItem
{
Content = new Image
{
Source = new BitmapImage(new Uri("logo.ico", UriKind.Relative)),
Width = 16,
Height = 16
}
};
Grid.SetColumn(logo, 2);
StatusBarItemsSource.Add(logo);https://stackoverflow.com/questions/48366598
复制相似问题