如何在Windows应用商店通用应用程序(W8.1 + WP8.1)中缩放文本?基本上,无论使用哪种设备/分辨率,应用程序看起来都应该相同.目前的情况是布局(基于动态网格的布局)和图像比文本(字体大小)更好地缩放.
显示的文字看起来很适合WVGA分辨率(480×800),但对于1080p分辨率来说却非常小.
我已经阅读了许多内容,例如 缩放到像素密度的指南或 支持多种屏幕尺寸的指南
但我仍然不知道如何扩展文本以保持可读性,无论显示分辨率/ DPI.
当然,我可以编写一个使用DisplayInformation.ResolutionScale属性将字体大小转换为适当值的类.
例:
但我不确定这是否适用于所有情况.有没有更好的方法呢?我认为这样的常见任务可以通过一些内置功能来执行.
免责声明:这是(希望)不是"让我谷歌这个为你问题"我发现大量的页面是关于缩放,但它们都覆盖布局或图像.但我找不到任何有关字体大小缩放的信息.如果我错过了什么,请原谅我.
xaml windows-8.1 windows-phone-8.1 win-universal-app windows-8.1-universal
我尝试从visual studio*.csproj文件中查询元素.我创建了一个简短的例子来说明问题:
// Working
string xml1 = @"<Project ToolsVersion='4.0'>
<ItemGroup Label='Usings'>
<Reference Include='System' />
<Reference Include='System.Xml' />
</ItemGroup>
</Project>";
// Not working
string xml2 = @"<Project ToolsVersion='4.0' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
<ItemGroup Label='Usings'>
<Reference Include='System' />
<Reference Include='System.Xml' />
</ItemGroup>
</Project>";
XDocument doc = XDocument.Parse(xml2);
foreach (XElement element in doc.Descendants("ItemGroup"))
{
Console.WriteLine(element);
}
Run Code Online (Sandbox Code Playgroud)
字符串xml1工作正常,xml2不返回任何内容.这些字符串之间的唯一区别是文档根目录中的xmlns属性.
我如何查询包含xmlns属性的文档?当xml文档包含xmlns属性时,为什么会出现问题?
如何使用MVVM模式本地化WPF应用程序?我真的想以"正确"的方式做到这一点.
我目前的方法是使用.resx资源文件来本地化我的应用程序.

我把它们包含在我的xaml代码中
xmlns:localization="clr-namespace:ClientLibTestTool.ViewLanguages"
Run Code Online (Sandbox Code Playgroud)
并像这样访问它们:
<Button x:Name="BtnGenerate"
Content="{x:Static localization:localization.ButtonGenerate}"/>
Run Code Online (Sandbox Code Playgroud)
我的问题:
回答:
问题1:
问题2 :(谢谢你,stijn)
public MainWindow()
{
// Debug Settings
localization.Culture = CultureInfo.GetCultureInfo("en-US");
// localization.Culture = CultureInfo.GetCultureInfo("de-DE");
this.InitializeComponent();
}
Run Code Online (Sandbox Code Playgroud)
问题3 :(谢谢你,stijn)
不是真的,有必要重绘完整的窗口.
我正在使用可用于Windows 8.1和Windows Phone 8.1的新Windows Store Universal App模板,并且想知道如何在XAML代码中格式化字符串.
我尝试了什么(XAML):
<TextBlock Text="{Binding TestItem.CurrentDate, StringFormat={}{0:MM/dd/yyyy}}" />
Run Code Online (Sandbox Code Playgroud)
问题是StringFormat没有Windows.UI.Xaml.Controls.TextBox.
Microsoft已经创建了一个示例项目,该项目与格式化日期有关.但是那里使用的方法基于(丑陋的)代码.
所以,这是我的问题:
StringFormatWindows Store Universal Apps不提供?public class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value == null)
return null;
if (!(value is DateTime))
return null;
var dateTime = (DateTime)value;
var dateTimeFormatter = new DateTimeFormatter(YearFormat.Full,
MonthFormat.Full,
DayFormat.Default,
DayOfWeekFormat.None,
HourFormat.None,
MinuteFormat.None,
SecondFormat.None,
new[] { "de-DE" …Run Code Online (Sandbox Code Playgroud) xaml windows-store-apps windows-8.1 windows-phone-8.1 win-universal-app
我们有一个业务应用程序,通过clickonce部署.我可以毫无问题地构建和发布应用程序,但是当我尝试使用持续集成(构建每个签入)时,我收到以下错误:
Run Code Online (Sandbox Code Playgroud)2>C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(3450,5):错误MSB4044:"SignFile"任务未获得所需参数"CertificateThumbprint"的值.
[C:\构建\ 1 \脉冲\ DefaultBuild\SRC \脉冲\脉冲\ Pulse.csproj]
完成执行任务"SignFile" - 失败.
我们使用代码签名证书签署应用程序(更具体地说:ClickOnce清单),该证书在AD中注册为Trusted Publisher.
证书存储在我本地工作站的证书存储中.证书也位于构建服务器的证书存储区中(1.在个人存储中,2.在TFSBuildServiceHost服务帐户的个人存储中,以及3.在tfs /构建服务器本身的个人存储中).
哪里使用Visual Studio 2013 Update 4,C#,.Net 4.5和TFS 2013 Update 4.
我不知道导致此错误的原因,任何帮助表示赞赏.
我忘了提到几周前tfs构建工作正常.我没有更改任何东西,我验证了项目文件(Pulse.csproj)没有改变,我也有一些成功的构建与精确的Pulse.csproj文件/构建定义.我很确定它必须是tfs服务器上的东西.我记得微软在证书基础设施的一些更新方面有些问题吗?
"C:\ Program Files(x86)\ MSBuild\12.0\bin\amd64\MSBuild.exe"C:\ Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse.sln
构建失败,并显示以下消息:
CleanPublishFolder:删除目录"bin\Debug\app.publish \"._DeploymentComputeClickOnceManifestInfo:创建目录"bin\Debug\app.publish".
将文件从"obj\Debug\Pulse.exe"复制到"bin\Debug\app.publish\Pulse.exe".C:\ Program Files(x86)\ MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(3450,5):错误MSB3482:注册时发生错误:找不到SignTool.exe.[C:\ Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj]完成构建项目"C:\ Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj"(默认目标) ) - 失败.完成构建项目"C:\ Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse.sln"(默认目标) - 失败.
建立失败.
"C:\ Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse.sln"(默认目标)(1) - >"C:\ Builds\1\Pulse\DefaultBuild\src\Pulse\Pulse\Pulse.csproj "(默认目标)(2) - >(_ DeploymentComputeClickOnceManifestInfo target) - > C:\ Program Files(x86)\ MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(3450,5):错误MSB3482:An sig ning时发生错误:找不到SignTool.exe.[C:\构建\ 1 \脉冲\ DefaultBuild\SRC \脉冲\脉冲\ Pulse.csproj]
Run Code Online (Sandbox Code Playgroud)0 Warning(s) 1 …
我的WPF Windows包含一个TabControl,它显示不同选项卡上的内容.单击下面的按钮可通过ICommand接口/ Binding执行方法.被调用的方法生成要在第二个选项卡中显示的文本.

如何在不违反MVVM模式的情况下切换到按钮单击时的第二个选项卡?
我试图将TabItem.IsSelected属性绑定到我的ViewModel中的某些内容,但我也想使用其他标签(tab1).
有什么想法吗?
我必须选择包含具有特定名称的属性的所有节点.
这是我目前的工作方法.
public List<string> RetrieveValuesForAttribute(string attributeName)
{
var list = new List<string>();
string xpath = "//*[@Name='" + attributeName + "']";
XmlNodeList xmlNodeList = document.SelectNodes(xpath);
foreach (XmlNode xmlNode in xmlNodeList)
{
list.Add(xmlNode.Attributes[attributeName].InnerText);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
我尝试选择包含具有method参数中给出的名称的属性的所有节点,attributeName并将值添加到变量中list.
例:
这个方法调用:
List<string> result = RetrieveValuesForAttribute("itemSelectedHandler");
Run Code Online (Sandbox Code Playgroud)
应返回包含字符串"OnSelectedRelatedContactChanged"的列表
这是xml文件:
<GroupBoxWrapper id="gbRelatedContacts" text="Related Contacts">
<TabIndex>0</TabIndex>
<TabStop>false</TabStop>
<PanelWrapper id="pnlRelatedContactsView" width="1350">
<TabIndex>0</TabIndex>
<TabStop>false</TabStop>
<ListViewWrapper id="lvRelatedContacts" itemSelectedHandler="OnSelectedRelatedContactChanged" itemDoubleClickHandler="OnRelatedContactDoubleClick">
<TabIndex>0</TabIndex>
<TabStop>true</TabStop>
<ListViewColumns>
<Column title="Name" mapNode="Contact\Name" />
<Column title="Lastname" mapNode="Contact\Lastname" />
</ListViewColumns>
</ListViewWrapper>
</PanelWrapper>
</GroupBoxWrapper>
Run Code Online (Sandbox Code Playgroud)
进一步的问题:用LINQ解决这个问题会更好吗?
解决方案1: …
我将Visual Studio 2013 Professional Update 4与多个SQL Server 2012 Enterprise服务器/实例结合使用.Idea是使用带有SQL Server项目的Visual Studio解决方案创建受版本控制的部署.
但是由于某种原因,"更新目标"和"生成脚本"按钮被禁用.

我可以从sql server数据库更新本地数据库项目,但反过来不起作用.(见截图)
尽管我找到了一些有类似问题的人,但Google根本没有帮助.
但是这些问题/博客中没有一个是关于Visual Studio 2013的,而且所提出的解决方案都没有适用于我.
问题:为什么禁用"更新目标"按钮,我必须更改以解决此问题?
注意:当然,我使用的是最新版本的SQL Server数据工具(12.0.50318.0)
t-sql deployment database-schema sql-server-2012 visual-studio-2013
我已经对该主题进行了一些研究,并且已经在少数应用程序中使用了MVVM模式。
我问这个问题是因为有时MVVM被称为设计,有时被称为架构模式。
在大多数情况下,MVVM模式称为设计模式。但是我个人会投票赞成体系结构,因为对我而言,它明确定义了应用程序的体系结构(例如,三层,View,ViewModel,Model以及它们之间的交互方式)
这样的SO问答是关于建筑和设计模式之间的区别。在回答中,据说MVC是一种架构模式。几乎所有关于MVVM的解释都包含与MVC的比较。MVVM因此也是一种架构模式吗?
这个msdn文章(顺便说一句非常好)将MVVM Pattern称为设计模式,由真正应该知道其区别的人编写。
我糊涂了。设计还是建筑图案?这个词混在一起了吗?
编辑:我的学士学位论文需要知道这一点
我使用MVVM Light框架制作了一个C#WPF应用程序.我的应用程序使用ViewModelLocator该类在运行时定位视图模型.该ViewModelLocator使的使用SimpleIoc,其还配备了一流的MVVM光框架.
这是我的场景:用户登录可以使用我的应用程序.在注销时,我想处置/重置/重新创建所有viewmodel实例,以便为下一个用户提供干净的环境.
我尝试Cleanup()在ViewModelLocator类中实现该方法,但它无法正常工作.不工作意味着(第二个)用户看到之前登录的用户的数据.
第一次尝试:
public static void Cleanup()
{
SimpleIoc.Default.Reset();
}
Run Code Online (Sandbox Code Playgroud)
第二次尝试:
public static void Cleanup()
{
SimpleIoc.Default.Unregister<LoginViewModel>();
SimpleIoc.Default.Unregister<TaskViewModel>();
SimpleIoc.Default.Register<LoginViewModel>();
SimpleIoc.Default.Register<TaskViewModel>();
}
Run Code Online (Sandbox Code Playgroud)
第三次尝试(不是我想要的,但它是一种解决方法):
public static void Cleanup()
{
// I implemented the ICleanup interface in my viewmodels
// The cleanup method clears all my variables eg: myCollection.clear();
SimpleIoc.Default.GetInstance<LoginViewModel>().Cleanup();
SimpleIoc.Default.GetInstance<TaskViewModel>().Cleanup();
}
Run Code Online (Sandbox Code Playgroud)
如何重置ViewModelLocator班级中的所有实例?如果有必要,我愿意使用更先进的Ioc容器.
c# ×5
mvvm ×3
mvvm-light ×3
wpf ×3
windows-8.1 ×2
xaml ×2
xml ×2
architecture ×1
certificate ×1
clickonce ×1
code-signing ×1
deployment ×1
linq-to-xml ×1
localization ×1
msbuild ×1
t-sql ×1
tfs2013 ×1
xpath ×1