我有一个应用程序使用单独的库程序集资源(但不是一个没有代码的资源专用程序集),我想在库中包含一个自定义字体.
Open Type Font如果我将其.otf文件作为资源添加到执行程序集的项目(而不是资源库项目),并且属性设置为Build Action ='Resource ,我可以获取要加载的字体.'并使用以下代码复制到输出='不复制':
FontFamily font = new FontFamily(new Uri("pack://application:,,,/"),
"./Resources/#CustomFont")); // Resources is a subfolder
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将字体添加到资源库项目时,不会加载字体.我尝试使用以下代码加载它(另请注意:我对包URI没有太多经验):
FontFamily font = new FontFamily(new Uri("pack://application:,,,/MyLibrary"),
"./Resources/#CustomFont"));
// there is a Resources subfolder in my library as well
// not sure about whether I need the .
Run Code Online (Sandbox Code Playgroud)
该库适用于其他资源,例如图像.
我还尝试了一堆URI的其他排列没有成功(它也不会抛出异常,只显示默认字体,不确定这是否是一个单独的问题).
我一直在使用MSDN上的包装字体和应用程序,它有一个创建字体资源库的例子,但没有使用代码的示例(我不得不使用代码隐藏此代码).
关于我需要做什么的任何想法?我偏离了轨道吗?
在WPF,我想做一个TextBox验证用户输入只允许输入解析为double的输入.当盒子失去焦点(和Binding更新)时,如果用户输入了无效输入,我希望盒子切换回之前的状态.
这似乎应该很简单,但我无法让它工作.无论我尝试过什么,TextBox继续显示用户输入的无效字符串,即使属性正确验证输入而不保存除非有效.我觉得通知在失败的解析上更改属性会导致TextBox重置为旧值,但事实并非如此.
我的视图模型有一个属性:
private double _doubleDisplayValue;
public string DoubleDisplayValue
{
get { return _doubleDisplayValue.ToString(); }
set
{
double result;
bool success = double.TryParse(value, out result);
if(success)
{
if(_doubleDisplayValue != result)
{
_doubleDisplayValue = result;
NotifyPropertyChanged("DoubleDisplayValue");
}
}
else
{
// I feel like notifying property changed here should make the TextBox
// update back to the old value (still in the backing variable), but
// it just keeps whatever invalid …Run Code Online (Sandbox Code Playgroud)