【问题标题】:Skinnable Controls (WPF/UWP)可换肤控件 (WPF/UWP)
【发布时间】:2015-11-16 05:26:23
【问题描述】:
我正在构建一个虚拟乐器。控件必须看起来不错,并且它们必须看起来像其他虚拟乐器。以下是他们需要的外观示例:
http://www.vstskins.com/
基本上就是旋钮、推子、开关等等。
标准的 Telerik、Infragistics 控件等不符合此要求。我需要控件来接受放置在顶部的位图图像 - 不是用 Xaml 样式设计的。我说的是实际皮肤而不是主题。
有没有我可以使用的控件?
PS:此时我不确定我会选择 WPF 还是 UWP,但获得良好的控件将对我的平台决策产生重大影响。
【问题讨论】:
标签:
wpf
controls
uwp
skinning
【解决方案1】:
首先,关于WPF vs UWP,应该根据您对应用程序使用场景的期望来决定:您想将您的应用程序发布到windows store吗?您是否需要跨多种设备工作?或者您只是想开发一个桌面应用程序? UWP 和 WPF 都有丰富的 UI 元素库。你可以根据自己的关心来选择。 UI 方面你可以在技术上做同样的事情。
在这里,我将重点介绍 UWP 中的解决方案。我对您的要求的理解是,您需要在后面的代码中将控件的背景更改为不同的图像。如果我误解了,请纠正我。图片来源有多种设置方式:使用相对URI、使用网络或本地存储文件、使用流源等。请参考MSDN online help。下面是一个非常简单的示例:
In XAML:
<StackPanel>
<Ellipse Height="200" Width="300">
<Ellipse.Fill>
<ImageBrush x:Name="test" ImageSource="Assets/image1.jpg" />
</Ellipse.Fill>
</Ellipse>
<Button Click="Button_Click">Change Background</Button>
</StackPanel>
In C#:
private void Button_Click(object sender, RoutedEventArgs e)
{
Uri uri = new Uri("ms-appx:///Assets/hero.jpg");
test.ImageSource = new BitmapImage(uri);
}