Tag: xaml

WPF类库中的程序集范围/根级别样式

我有一个支持WPF(基于本文 )的C#(2008 / .NET 3.5)类库程序集。 我创build了几个窗口,现在正在尝试为它们创build一个通用样式集。 但是,由于它是一个类库(而不是WPF应用程序),我没有一个app.xaml(及其包含的应用程序和相应的Application.Resources)来存储这些样式以进行全局访问。 所以: 如果我没有app.xaml(见上文),我怎样才能创build一个顶级的样式定义集合,这些样式定义将被程序集中的所有xaml文件看到 ? 和/或是否可以添加一个工作的app.xaml到类库? 仅供参考,我曾尝试在ResourceDictionary.xaml文件中创buildResourceDictionary,并将其包含在“Window.Resources”块中的每个窗口中。 原来,解决了button等的风格,但不是封闭的窗口。 我可以把Style="{StaticResource MyWindowStyle}"放在窗口的开始块中,它会在VSdevise窗口中编译和显示,但是在实际的运行过程中,我得到一个parsingexception(MyWindowStyle找不到;我正在猜测Visual Studio看到包含在该行后面的字典,但CRL更顺序地执行,因此尚未加载ResourceDictionary)。 感谢您的想法,但仍然没有去…显然,类库不隐式地支持generic.xaml用法。 我将generic.xaml添加到我的类库项目,并将其构build操作设置为“资源”。 它包含: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Style TargetType="{x:Type Window}" x:Key="MyWindow"> <Setter Property="Background" Value="Black"/> </Style> </ResourceDictionary> 我想要使​​用主题的窗口xaml如下所示: <Window x:Class="MyAssembly.ConfigureGenericButtons" x:ClassModifier="internal" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Style="{StaticResource MyWindow}" Title="ConfigureGenericButtons"> …Buttons, etc… </Window> 虽然VSdevise窗口没有使用MyWindow风格(即黑色背景)显示窗口,但编译良好并启动。 但是,当包含此类库的应用程序调用导致此窗口显示时,我得到一个XamlParseException: 找不到名为“{MyWindow}”的资源。 我也试过忽略了Style参数,看看窗口是否会默认使用这个样式(我试过用generic.xaml中的x:Key来包含和不包含)。 没有错误,但在generic.xaml中定义的任何东西都没有显示出来。 我在这里做错了什么,或者有什么其他想法可以允许在窗口上使用常用的自定义样式(即,不必在每个窗口的xaml中定义样式) – 但是这不是一个应用?

我如何在XAML中定义一个variables?

我在XAML中有以下两个button: <Button Content="Previous" Margin="10,0,0,10"/> <Button Content="Next" Margin="0,0,10,10"/> 我如何定义“10”是一个variables,所以我可以在一个地方改变它,像这样: PSEUDO CODE: <variable x:key="theMargin"/> <Button Content="Previous" Margin="{Variable theMargin},0,0,{Variable theMargin}"/> <Button Content="Next" Margin="0,0,{Variable theMargin},{Variable theMargin}"/>

UriFormatException:无效的URI:指定了无效的端口

作为一个Uri下面的一个参数的程序集限定string在XAML中工作,但给我在代码中使用时显示的错误。 我尝试了每种UriKind都有相同的结果。 我怎样才能解决这个问题? [Test] public void LargeImageSource_IsKnown() { var uri = new Uri( "pack://application:,,,/" + "MyAssembly.Core.Presentation.Wpf;component/" + "Images/Delete.png", UriKind.RelativeOrAbsolute); Assert.That( _pickerActivityCollectionVm.DeleteActivityCommand.LargeImageSource, Is.EqualTo(uri)); } System.UriFormatException : Invalid URI: Invalid port specified. at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) at System.Uri..ctor(String uriString, UriKind uriKind) UPDATE 基于托马斯的高超的回答和我自己对可读性的评论,我在我的BaseTestFixture类中使用了以下内容。 希望这可以帮助别人。 protected virtual void OnFixtureSetUp() { // logging, other one time […]

在XAML中访问代码隐藏variables

如何访问Sample.xaml.cs文件中的公共variables,如asp.net <%= VariableName%>?

文本框绑定双向不会更新,直到焦点丢失WP7

我有一个文本框的数据input页面。 文本框的绑定设置为TwoWay 。 我的视图模型中的数据只有在文本框失去焦点时才会更新。 如果我点击一个button(如保存),并且文本框仍然有焦点,则保存事件的视图模型中的文本框中的更改不会更改。 有没有办法让绑定保存文本框的值失去焦点之前? 或者我需要在保存事件中做些什么?

WPF中的文本框绑定更新

只有当我点击另一个控件时,MessageText属性才会更新。 更重要的是,如果我按任何button的Click处理程序不执行,而是执行MessageText集。 我打破了我的头。 <TextBox x:Name="messageText" Grid.Row="1" Grid.Column="0" TextWrapping="Wrap" Text="{Binding Path=MessageText, Mode=TwoWay}"/> private void ChatView_Loaded(object sender, RoutedEventArgs e) { DataContext = viewModel; } public string MessageText { get { return this.messageText; } set { this.messageText = value; OnProperyChanged("MessageText"); } }

WinRT / UWP框架和页面caching:如何在Navigate()上创build新的页面实例,并保持页面实例在GoBack()

我正在尝试用C#创build一个UWP(通用Windows应用程序)应用程序。 我的问题是Frame控制:如果我使用它没有NavigationCacheMode = Required ,每次用户返回,页面不会保留在内存中,将被重新创build。 如果我将NavigationCacheMode设置为Required或Enabled ,则返回正常工作(无新页面对象), 但如果我导航到来自同一types的另一个页面,则上一页面对象将被回收并重用(无新页面实例)。 期望的行为: 有没有办法与原来的Frame控制有如下行为(如在Windows Phone中): 在Navigate()上创build新页面实例 将页面实例保留在GoBack() 我知道的唯一的解决scheme是创build一个自己的Frame控制,但这会导致其他问题(例如:缺lessSetNavigationState()方法等) 示例场景: 简单的应用程序示例有三个页面: TvShowListPage , TvShowDetailsPage , SeasonDetailsPage 。 TvShowListPage是入口页面。 点击一个TvShow导航到TvShowDetailsPage 。 现在在TvShowDetailsPageselect列表中的一个季节并导航到TvShowDetailsPage 。 如果导航回来,页面应该留在内存中,以避免重新加载页面。 但是,如果用户返回到TvShowListPage并select另一个TvShow TvShowDetailsPage被回收,并且可能处于错误的状态(例如,显示投射枢轴而不是第一个季节枢轴) 我正在寻找默认的Windows Phone 7行为:导航在页面堆栈上创build一个新页面,然后从堆栈中删除顶层页面,并显示堆栈中的前一页(存储在内存中)。 解: 由于没有解决这个问题,我不得不重新实现所有寻呼相关的类:页面,框架,SuspensionManager等… 提供所有这些类的库MyToolkit可以在这里下载: https : //github.com/MyToolkit/MyToolkit/wiki/Paging-Overview 参考文献: http://www.jayway.com/2012/05/25/clearing-the-windows-8-page-cache/ :没有好的解决scheme http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/88e6d1b3-1fa6-4ab4-a816-e77c86ef236f/ :实现自己的框架类是没有解决scheme,因为它不适用于SuspensionManager

绑定到转换器参数

是否有可能绑定到Silverlight 4.0中的ConverterParameter? 例如,我想要做这样的事情,并将ConverterParameter绑定到ViewModel中的对象。 如果这是不可能的,还有其他的select吗? <RadioButton Content="{Binding Path=Mode}" IsChecked="{Binding Converter={StaticResource ParameterModeToBoolConverter}, ConverterParameter={Binding Path=DataContext.SelectedMode,ElementName=root}}" />

全屏幕wpf

我正在开发一个WPF应用程序,将以全屏幕显示。 此外,该应用程序将在许多尺寸的平板电脑上工作。 我想,我的应用程序运行在全屏独立的维度。 完成这项任务的最佳做法是什么?

布尔CommandParameter在XAML中

我有这个代码(工作正确): <KeyBinding Key="Enter" Command="{Binding ReturnResultCommand}"> <KeyBinding.CommandParameter> <s:Boolean> True </s:Boolean> </KeyBinding.CommandParameter> </KeyBinding> “s”当然是System命名空间。 但是这个命令被调用了好几次,而且真的会增加一些简单的XAML代码。 这是否真的是XAML中布尔命令参数的最短表示法(​​除了将命令拆分为几个命令)?