我的程序集包含一个BuildAction == Resource的图像.我想从这个嵌入式资源中获取BitmapImage.
我可以从这样的文件加载BitmapImage:
var bitmap = new BitmapImage(new Uri(path));
Run Code Online (Sandbox Code Playgroud)
但是如何创建一个将引用嵌入式资源图像的Uri呢?
当我尝试创建' pack URI '(例如pack://application:,,,/MyImage.png或pack://application:,,,/MyAssembly;component/MyImage.png)时,会抛出异常:
System.UriFormatException"无效的URI:由于存在冒号(':')而无法解析端口,因此需要端口."
我在这篇博客文章中找到了修复UriFormatException
但是,应用该修复程序后,我仍然会尝试从包URI加载BitmapImage.
使用pack://application:,,,/Image.png格式时,我得到一个NullReferenceException,当使用该pack://application:,,,/AssemblyName;component/Image.png格式时,我得到一个NotSupportedException"无法识别Uri前缀".
总结 我的问题是我在实例化任何WPF控件/窗口/等之前尝试在进程中使用'pack URI',因此'pack'URI方案尚未注册(其他WPF必需'stuff'也必须不要设置,因为手动注册包方案本身不能解决问题).解决方案是等到实例化我的WPF用户控件后才使用包URI.
在C#中乘以十进制值时,我注意到一种奇怪的行为.考虑以下乘法运算:
1.1111111111111111111111111111m * 1m = 1.1111111111111111111111111111 // OK
1.1111111111111111111111111111m * 2m = 2.2222222222222222222222222222 // OK
1.1111111111111111111111111111m * 3m = 3.3333333333333333333333333333 // OK
1.1111111111111111111111111111m * 4m = 4.4444444444444444444444444444 // OK
1.1111111111111111111111111111m * 5m = 5.5555555555555555555555555555 // OK
1.1111111111111111111111111111m * 6m = 6.6666666666666666666666666666 // OK
1.1111111111111111111111111111m * 7m = 7.7777777777777777777777777777 // OK
1.1111111111111111111111111111m * 8m = 8.888888888888888888888888889 // Why not 8.8888888888888888888888888888 ?
1.1111111111111111111111111111m * 9m = 10.000000000000000000000000000 // Why not 9.9999999999999999999999999999 ?
Run Code Online (Sandbox Code Playgroud)
我无法理解的是上述最后两个案例.怎么可能?
WPF是否有办法在MouseMove事件上获取鼠标下的元素数组?
在XAML中是否有办法确定ListBox是否有数据?
如果没有数据,我想将其IsVisibile属性设置为false.
如何在ItemsControl上获得交替颜色?我将AlternationCount设置为2,但ItemsControl.AlternationIndex属性始终返回0.
<ItemsControl ItemsSource="{Binding}" AlternationCount="2">
<ItemsControl.Resources>
<Style x:Key="FooBar" TargetType="Grid">
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="Blue"/>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</ItemsControl.Resources>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,10" Style="{StaticResource FooBar}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions >
<RowDefinition Height="Auto" />
<!--<RowDefinition Height="Auto" />-->
</Grid.RowDefinitions>
<CheckBox IsChecked="{Binding Checked, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" />
<Label Grid.Column="1" Content="{Binding CompanyName}" />
<Label Grid.Column="2" …Run Code Online (Sandbox Code Playgroud) 问候,我在db中有一些文本,它如下:
Lorem ipsum dolor坐下来,精致的adipistur elit.Duis tellus nisl,venenatis et pharetra ac,tempor sed sapien.整齐的pellentesque blandit velit,在tempus urna semper坐下来.Duis mollis,libero ut consectetur interdum,massa tellus posuere nisi,eu aliquet elit lacus nec erat.赞美商品.**[a href =' http ://somesite.com']某个网站[/ a]**在新西兰的Suspendisse坐在amet massa molestie gravida feugiat ac sem.Phasellus ac mauris ipsum,vel auctor odio
我的问题是:我怎样才能显示Hyperlink一个TextBlock?我不想为此目的使用webBrowser控件.我不想使用此控件之一:http://www.codeproject.com/KB/WPF/htmltextblock.aspx也
我的XAML中有一个样式设置,用于Button在我的WPF窗口中创建圆角.我希望这种样式适用于我的应用程序中所有窗口上的所有按钮.
有没有一种方法,类似于CSS,我可以把它放到另一个文件中并以某种方式在我的所有窗口中引用它?或者我每次只需要复制粘贴它.
WPF中是否有任何向导类型控件?我需要功能,我可以前进和后退,并使用选项卡选择一个特定项目,将显示嵌套项目的详细信息.我可以使用TabControl控件,但选项卡项是动态的,所以我不能将该区域嵌套在选项卡项中.
ExpanderWPF中的控件不会拉伸以填充所有可用空间.XAML中有任何解决方案吗?
是否有任何"最佳实践"方法来替换默认模板的一部分.当前的用例是树视图.默认情况下,树视图具有这种小三角形形状以展开和折叠.
如果我替换整个控件模板,我知道如何替换它们,如下面的代码所示.我不确定是否有办法"保持所有默认值,只需更改XY".它不是一种风格,我基本上需要替换现有控件模板的一部分.
为了说明,请查看以下XAML.第一个较小的块是我希望能够适应的相关XAML.
较大的第二和第三部分基本上是默认模板的副本,仅用于从头开始管理"已更改"部分.
有没有更好的方法来做到这一点,在下半场节省长而混乱的XAML?
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid
Width="15"
Height="13"
Background="Transparent">
<Path x:Name="ExpandPath"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="1,1,1,1"
Fill="Black"
Data="M 4 0 L 8 4 L 4 8 Z"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked"
Value="True">
<Setter Property="Data"
TargetName="ExpandPath"
Value="M 0 4 L 8 4 L 4 8 Z"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="19"
Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> …Run Code Online (Sandbox Code Playgroud)