(vs express2012,WPF,.net4.5) 我是C#开发的新手。 我目前正在使用kinect SDK 1.7开发一个Windows应用程序
我想在运行时设置KinectTileButton样式,但不确定如何,我已经尝试了在Stack上找到的各种解决方案,但没有一个有效,我假设这可能是由于我缺乏C#知识,所以请提供傻瓜的答案。
xaml标记是:
<k:KinectTileButton Background="{x:Null}"
BorderThickness="3" Height="Auto" Margin="50,0"
BorderBrush="#FF181919" Width="Auto" />
问题是KTB是在运行时动态创建的。 代码背后:
for (var index = 0; index < 300; ++index)
{
var button = new KinectTileButton ();
this.Width = Double.NaN;
Image img = new Image();
if (files[fileindex].FullName.EndsWith(".jpg"))
img.Source = new BitmapImage(new Uri(files[fileindex].FullName));
button.Content = img;
this.wrapPanel.Children.Add(button);
fileindex++;
if (fileindex >= files.Length)
fileindex = 0;
}
我修改了代码,也许它可以帮助那些使用MS kinect开发并且在C#上表现不佳的人。
经过一点点的修修补补,这就是我设计KTB的方式
var button = new KinectTileButton ();
button.Background = null;
button.Margin = new Thickness(40);
button.Height = Double.NaN;
button.Width = Double.NaN;
button.BorderBrush = Brushes.Transparent;
答案 0 :(得分:0)
我不确定你在哪里创建KinectTileButtons
,但我会假设您在其中一个外部控件(Window
)的代码隐藏中进行操作。您可以在XAML
中创建样式,然后使用FindResource(...)
在代码隐藏中分配它。如果你这样做,你将能够重复使用多个按钮的样式。
<强> XAML 强>:
<Window>
...
<Window.Resources>
<Style x:Key="KinectButtonStyle" TargetType=k:KinectTileButton>
<Setter Property="Margin" Value="40">
<Setter Property="BorderBrush" Value="Transparent" />
...
</Style>
</Window.Resources>
</Window>
<强>代码隐藏:强>
var button = new KinectTileButton
{
Style = FindResource("KinectButtonStyle") as Style
}
事实上,如果您要从Key
中删除Style
,则会隐式应用它,您不需要执行FindResource(...)
查找。我不知道这对你是否可取。