我的xaml文件中有一个名为“mystack”的stackpanel,我在.cs文件中动态添加按钮,想要删除C#.cs文件中的按钮边框
我真正想要的是使用来自字符串列表的按钮填充此堆栈面板 提前谢谢
XAML:
<Grid HorizontalAlignment="Left" Height="227" Margin="10,10,0,0" Grid.Row="2"
VerticalAlignment="Top" Width="530">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel Name="mystack" HorizontalAlignment="Left" Grid.Row="2"
VerticalAlignment="Top" Width="520"/>
</ScrollViewer>
</Grid>
的.cs:
public List<String> Schools()
{
List<String> l = new List<string>();
l.Add("SST");
l.Add("SBE");
l.Add("SSH");
return l;
}
答案 0 :(得分:1)
我同意HighCore,您通常不希望操纵代码中的UI元素。
要删除Border
按钮,您可以在Xaml中将Button的BorderThickness
属性设置为“0”,或在代码隐藏中将new Thickness(0)
设置为myButton.BorderThickness = new Thickness(0);
。
即
public List<string> Schools
{
get { return _schools; }
set { _schools = value; }
}
编辑:
好的,我注意到了你的更新问题。我会创建一个存储学校列表的属性,并以类似于此的方式绑定到它:
DataContext
在某处您需要将控件的Schools
设置为包含<ItemsControl ItemsSource="{Binding Schools}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}" BorderThickness="0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl>
属性的类。如果您要动态更新学校列表,则需要实施INotifyPropertyChanged,以便UI知道何时更新。然后你的Xaml看起来像这样:
{{1}}
答案 1 :(得分:0)
我必须做的才能有效地hide
按钮边框 - 并且由于按钮控制模板,我相信哪个利用和更改按钮边框(即即使你删除它也会将它绘制在上面一些触发器我相信)......
...也是设置BorderBrush="Transparent"
(我总是做BorderThickness
但是我猜它不需要 - 仅用于视觉/布局look'n'feel)
即。单独设置thickness
是不够的。
我真的不确定这是下注的方式,或者实际上我是 确定必须有更聪明的东西 - 但我总是最终得到 这一点。
正确的方法 - 建议 - 是编写自己的Button模板 - 基于微软官方的一个 - 或
base
它 - 并做什么 你需要没有边界。
对于/ C#后面的代码:
根据你改变的问题,你真的不需要这样做 - 做别人建议的事情
答案 2 :(得分:0)
您无法删除按钮的边框,如:btn.BorderThicknes=new Thickness(0);
答案 3 :(得分:0)
最好的方法是:
<Style TargetType="Button">
<Style.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="0"/>
</Style>
</Style.Resources>
</Style>
答案 4 :(得分:-1)
我真正想要的是用按钮填充这个堆栈面板 来自字符串列表
这叫做ListBox
:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}" BorderThickness="0"/>
<!-- Whatever other customizations to the button -->
</DataTemplate
</ListBox.ItemTemplate>
</ListBox>
视图模型:
public class ViewModel
{
public ObservableCollection<string> Items {get;set;}
public ViewModel()
{
Items = new ObservablecCollection<string>();
Items.Add("String1");
Items.Add("String2");
Items.Add("String3");
}
}
您需要学习MVVM模式。