Tag: xaml

WPF:如何从不同程序集中的窗口开始

我用谷歌搜索了它仍然无法使它工作 我有一个WPF应用程序,并希望从Main.xaml开始,它位于不同的程序集中。 两个组件都在同一位置。 我怎样才能做到这一点? 我从XAML中取出了StartupUri并尝试了这些和一些轻微的变化: protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); StartupUri = new Uri(“/CompanyName.VisualStudio.UI;CompanyName/VisualStudio/UI/DatabaseManager/Main.xaml”, UriKind.Relative); //StartupUri = new Uri(@”pack://application:,,,/ CompanyName.VisualStudio.UI;CompanyName/VisualStudio/UI/DatabaseManager/Main.xaml”); } 程序集的名称是“CompanyName.VisualStudio.UI”,名称空间是“CompanyName / VisualStudio / UI / DatabaseManager / Main.xaml” 有任何想法吗?

在列表框中动画删除的项目

我的应用程序中有一些Listboxes绑定到ObservableCollections,我想动画一个项目,如果它被删除。 我已经发现了一个关于使用FrameworkElement.Loaded事件动画添加项目的问题,但当然这与Unloaded事件的工作方式不同。 有没有办法以可以在datatemplate中使用的方式执行此操作? 编辑:我已经连接到我的ItemsSource中的CollectionChanged事件,并尝试手动应用动画。 目前它看起来像这样: ListBoxItem item = stack.ItemContainerGenerator.ContainerFromIndex(0) as ListBoxItem; item.LayoutTransform = new ScaleTransform(1, 1); DoubleAnimation scaleAnimation = new DoubleAnimation(); scaleAnimation.From = 1; scaleAnimation.To = 0; scaleAnimation.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 500)); ScaleTransform transform = (ScaleTransform)item.LayoutTransform; transform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation); 问题是,它根本不起作用。 该项目仍然只是弹出。 当方法被调用时,该项目仍然存在,所以它不应该在它消失之前播放动画吗? 或者我完全错了吗?

Windowsapp store应用:如何使用可扩展/可扩展的ListItems制作ListView?

我在C#Windowsapp store应用程序中有一个包含项目的Listview(这就是你所说的那些?我听说它们不再被称为Metro应用程序)。 类似于Android中的ExpandableListView ,我希望能够点击该列表项目的列表项目(而不是按钮)进行扩展, 点击展开的列表项目以使其崩溃,如果您点击另一个列表项目,则当前展开的列表项目将会崩溃,另一个将扩大。 在我的特定情况下,我有一个DataTemplate用于listitems的展开和非展开视图。 我已经看到Android的ExpandableListView可以使用附加信息扩展listitem(来自WPF的Expander做类似的事情),而不是用更大的项目替换它 ,但在Windowsapp store应用程序中是否有一个通用的解决方案? 如果不是,最接近的等价物是什么? 如下图所示,我想知道是否有一个组件可以这种方式扩展listitems,如果没有,我有哪些替代方案:

WPF:一个TextBox,它有一个按下Enter键时触发的事件

我没有在我的应用程序中为每个TextBox附加PreviewKeyUp事件并检查按下的键是否为Enter键然后执行操作,而是决定实现包含DefaultAction事件的TextBox扩展版本,该事件在按下Enter键时触发在TextBox 。 我所做的基本上是创建一个新的类,它使用公共事件DefaultAction从TextBox扩展,如下所示: public class DefaultTextBoxControl:TextBox { public event EventHandler DefaultAction = delegate { }; public DefaultTextBoxControl() { PreviewKeyUp += DefaultTextBoxControl_PreviewKeyUp; } void DefaultTextBoxControl_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key != Key.Enter) { return; } DefaultAction(this, EventArgs.Empty); } } 然后我使用我的应用程序中的这个自定义文本框(如xaml): 现在,在我学习WPF的过程中,我已经意识到几乎大部分时间都有一种“更酷”(并且希望更容易)实现的方式 …所以我的问题是, 我怎样才能改善上述控制? 或者是否有另一种方法可以进行上述控制? …也许只使用声明性代码而不是声明性(xaml)和程序性(C#)?

使用VSTest运行unit testing用例而不是MSTest

我在TFS2010服务器上有一个x64平台C#解决方案(VS2012)。 我已将unit testing项目(也是x64)附加到此解决方案并创建了构建定义。 当我对构建进行排队时,它会成功,但不会执行unit testing用例。 这是因为MSTest是一个32位应用程序。 因此,我决定自定义默认构建过程模板(DefaultTemplate.xaml)以调用VSTest(VSTest.console.exe)而不是MSTest。 这非常复杂,我无法为VSTest的工具箱添加构建活动。 有人做过这种定制吗? 我还考虑过配置.runsettings文件等其他方法。 我们是否有可以添加到.runsettings文件中的VSTest适配器接口?

Keyboard.Focus在WPF中的文本框上不起作用

我正在敲打看起来像是一个简单的问题来修复wpf,但我还没有发现为什么我不能让我的应用程序按照我的计划行事。 当用户按下ctrl + f时,我的wpf应用程序中会弹出一个小搜索框。 我想要的只是插入符号在搜索框文本框内闪烁,准备好接受任何用户输入而无需用户点击它。 以下是文本框的xaml代码,该代码可见,启用,命中可测试,tabstopable和focusable。 在后面的代码中,我在搜索框的可见性受到影响时调用此方法。 搜索框在应用程序的开头加载。 /// /// Handles events triggered from focusing on this view. /// /// The sender. /// The key event args. private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) { if (!((bool) dependencyPropertyChangedEventArgs.NewValue)) { return; } SearchCriteriaTextBox.Focus(); Keyboard.Focus(SearchCriteriaTextBox); SearchCriteriaTextBox.Select(0, 0); if (SearchCriteriaTextBox.Text.Length > 0) { SearchCriteriaTextBox.SelectAll(); } } 问题是,代码被调用,组件变为IsFocused = true但没有获得键盘焦点。 […]

基于模式为XML文件创建WPF编辑器

这是场景。 我们为我们的某个服务器产品使用大型XML配置文件。 此文件布局合理,并针对XSD文件进行validation。 现在是时候构建一个用于维护此文件的配置GUI,我想深入研究WPF来实现它。 我可以为每个配置部分布置一个单独的表单,每次我们在配置文件中添加一个选项时重构和重新分发,但我希望有一个更聪明的方法来做到这一点。 由于我已经有一个强类型的xml / xsd组合,我希望有一种优雅的方法来构建一个UI来轻松编辑它。 我知道我可以编写一个xml-> xaml转换,但希望有一些东西可以帮我完成繁重的工作吗? 提前致谢..

在WPF中更改Canvas的坐标系

我正在编写一个使用Canvas定位元素的地图应用程序。 对于每个元素,我必须以编程方式将元素的Lat / Long转换为canvas的坐标,然后设置Canvas.Top和Canvas.Left属性。 如果我有一个360x180canvas,我可以将canvas上的坐标转换为从X轴上的-180到180而不是0到360以及Y轴上的90到-90而不是0到180? 扩展要求: canvas可以是任何尺寸,因此如果它是360×180或5000×100仍然可以使用。 Lat / Long区域可能不总是(-90,-180)x(90,180),它可以是任何东西(即(5,-175)x(89,-174))。 像PathGeometry这样的元素是基点,而不是基于Canvas.Top/Left的元素需要工作。

在StackPanel中设置项目间距的简便方法是什么?

有没有一种简单的方法来设置StackPanel内的项目之间的默认空间,所以我不必在每个项目上设置Margin属性?

如何在WPF DataTemplate上使用DataType属性?

所以显然我做错了,但是在使用DataType属性时,我似乎无法使HierarchicalDataTemplate(甚至只是DataTemplate)工作。 我已经创建了最短的WPF应用程序来演示这个问题。 XAML: 码: namespace WpfApplication1 { public class Foo { public string Name { get; set; } } public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { var list = new List { “a”, 1, “b”, 2, new Foo() { Name=”Brian”}}; treeView1.DataContext = list; […]