Tag: xaml

无法使用ItemsControl和StackPanel将List 显示为我的视图列之一?

我有以下课程: public class Order { public string OrderName { get; set; } public List PartsList { get; set; } } public class Parts { public string PartName { get; set; } public double PartQuantity { get; set; } } 在我的代码中,我创建了一个Order对象列表 List myOrders; 我想以某种方式向用户显示所有这些,比如使用元素的堆栈面板,其中第一个是TextBox来显示OrderName,第二个是Datagrid来显示Parts列表? 老实说,我正在尝试许多不同的东西(我对使用什么类型的控件没有要求),但我永远无法正确显示PartsList(要么我什么都没得,或者我得到“收集”显示给用户。 目标是看到这样的事情: Order1 Part1 7 Part2 12 Order2 Part1 100 Part2 1 […]

如何在单独的线程中加载多个3D几何图形而不会遇到线程所有权问题?

我有几个MeshGeometry3D元素存储在单独的文件中。 例如, somemodel.xml可能包含 。 如果我在主UI线程中加载它们,它们会在加载时锁定UI。 所以我尝试在一个单独的线程中加载它们: ThreadStart threadStart = delegate { var geometry = ConvertXmlFileToMeshGeometry3D(filename); viewport2DVisual3D.Dispatcher.BeginInvoke( DispatcherPriority.Normal, new Action(delegate { viewport2DVisual3D.Geometry = geometry; })); }; threadStart.BeginInvoke(delegate(IAsyncResult aysncResult) { threadStart.EndInvoke(aysncResult); }, null); 但是,这在行viewportVisual.Geometry = geometry;上给出了一个例外viewportVisual.Geometry = geometry; : The calling thread cannot access this object because a different thread owns it. 换句话说, MeshGeometry3D是在不同的线程上创建的,所以我不能把它变成Viewport2DVisual3D的Geometry。 我无法想出一种方法来异步加载MeshGeometry3D而不会被错误的线程拥有。 这只是不可能的事情,还是有办法做到的? 编辑:分析表明加载MeshGeometry3D大约13%的时间用于从文件中加载xml元素( […]

Windowsapp store应用程序将sqlite查询写入listview的文本块

我正在开发Windows应用程序。 我正在使用sqlite数据库,我想将select查询的结果放入listview。 我的listview在这些网格中有网格和文本框。 但是当我给它们命名时,我无法在c#中定位这些文本框。 这是项目的代码示例:第一个sqlite查询: private void Page_Loaded(object sender, RoutedEventArgs e) { string DBPath = string.Empty; DBPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, “mydb.s3db”); using (var db= new SQLite.SQLiteConnection(DBPath)) { var query= db.Table(); var result= query.ToList(); foreach( var x in result ) { company frm= new company(); //addition to listview… } } } 除了输入listview之外,一切都完美无缺。 我已经使用listview之外的文本块对其进行了测试。 和xaml: 对不起,很长的post,我想提供有关该计划的详细信息,然后你可以看到出了什么问题。 我将不胜感激任何帮助/反馈。 致以我的问候…

C#WPF绑定到索引属性 – 我做错了什么?

我最近发现了索引属性。 这看起来像是我正在使用的数据最好在集合中表示的场景的完美解决方案,但仍然需要实现为可以在XAML数据绑定中使用的属性。 我开始只是测试创建索引属性,我没有遇到任何问题,但我似乎无法使绑定工作。 谁能指出我哪里出错? 这是带有嵌套类的测试类,用于创建索引属性: public class TestListProperty { public readonly ListProperty ListData; //————————— public class ListProperty : INotifyPropertyChanged { private List m_data; internal ListProperty() { m_data = new List(); } public string this[int index] { get { if ( m_data.Count > index ) { return m_data[index]; } else { return “Element not set for […]

值更改时为文本块设置动画

我想要一个类似于这个的动画(记分板,当2变为4时): gif示例 使用这篇文章: https : //michaelscherf.wordpress.com/2009/02/23/how-to-trigger-an-animation-when-textblocks-text-is-changed-during-a-databinding/ ,我去过能够在文本更改时修改文本块的不透明度。 但我完全不知道如何才能产生相同的翻译效果? 我的文本块也只包含数字。

使用WPFToolkit:Datagrid时,FindParent 为null

当我使用xaml代码时。 它工作正常。 切换到 : 我有错误: “值不能为null。参数名称:element” 使用此行中的FindParent(…) : DependencyObject parentObject = VisualTreeHelper.GetParent(child); public static T FindParent(this DependencyObject child) where T : DependencyObject { //get parent item DependencyObject parentObject = VisualTreeHelper.GetParent(child); //we’ve reached the end of the tree if (parentObject == null) return null; //check if the parent matches the type we’re looking for var parent […]

调试/断点为什么WPF BindingExpression为null

我有一个WPF CustomControl,带有一个名为SelectedRange的depdendency属性。 在XAML中的应用程序中,绑定设置如下: SelectedRange=”{Binding Source={StaticResource ResourceKey=MainWindow}, Path=GlobalXRange, Mode=TwoWay}” 我在代码中发现BindingExpression被覆盖(设置为null)。 我可以用这段代码确定这个: public IRange SelectedRange { get { return (IRange)GetValue(SelectedRangeProperty); } set { SetValue(SelectedRangeProperty, value); Binding b = BindingOperations.GetBinding(this, SelectedRangeProperty); BindingExpression be = BindingOperations.GetBindingExpression(this, SelectedRangeProperty); if (be == null) { Console.WriteLine(“Binding expression is null!”); } } } 事实certificate,应用程序启动后BindingExpression为null。 所以我的问题是 – 如何调试为什么这个BindingExpression为空 – 例如它在XAML中设置如何找出它被设置为null的位置? 注意:输出控制台中没有绑定错误

“双向”和XmlParseValidationException中的ExceptionValidationRule

我有一个数据库中的数据的WPF应用程序。 我可以在我的Appli中创建新数据并保存到数据库,我可以从我的DataBase加载数据。 例如,我创建了一个Person类。 在我的WPF应用程序中,我可以创建一个Person和ave到DataBase。 当我创建一个客户端时,一些文本框是带有ExceptionValidationRule的,并且,如果validation为false,它会出现一个带有详细错误的标签,一切正常:) 我的问题非常简单:在我的App Lauching中,在我的MainWindow()中,我在DataBase中获取所有Person对象并在DataGrid中加载它。 当我加载“Person对象”时,调用validation(因为validation过程是set()函数),如果有错误, throw new ApplicationException(….) 不是扔! 我有exception错误(XmlParseValidationException)消息,而不是说出错误的标签。 只有当数据加载到Person对象中时才会这样。 所以,得出结论: 如果我在文本框中输入绑定到Person对象的错误数据,如果validation为false,一切正常,我看到错误标签:) 如果我将数据库中的错误数据加载到Person对象,如果validation为false,则我的屏幕上会出现exception消息框! 这是我的XAML: 这是我的Person Class(为了更好的视图而清理): private string m_strCodePerson; public string strCodePerson { get { return m_strCodePerson; } set { m_strCodePerson = value; if (m_strCodePerson.Trim() != “”) { if (m_objIntervenant.ReadIntervenantCodebyCode(m_strCodePerson) != 0) { throw new ApplicationException(m_strCodePerson.Trim() + ” don’t exist !”); […]

将XAML文件转换为BitmapImage

我想从XAML (文本)文件创建具有所需分辨率的BitmapImage 。 我怎样才能做到这一点? 谢谢。

WPF DocumentViewer:首次点击时使用内部链接导航不准确

在WPF中,我在Frame控件中有一个DocumentViewer。 DocumentViewer显示使用MS Word生成的XPS文档。 该文档包含一个内容表,以帮助浏览文档。 只要DocumentViewer放置在允许导航的控件(例如框架)中,DocumentViewer就允许用户单击这些链接并导航到相应的页面。 当用户第一次导航时,DocumentViewer不会准确地跳转到链接的位置。 文档越远,跳跃位置和实际位置之间的空间就越大。 看起来每页都有一定数量的关闭。 在第一次链接点击后,导航工作完全正常。 使用框架上的导航按钮导航回来时,只要加载第一个视图,链接精度就会再次出现。 根据这篇文章,第一次点击链接后正在创建一个新的DocumentViewer。 似乎这创建了一个按预期工作的实例。 为什么初始实例没有准确导航以及如何解决这个问题? 下面剪切的代码可用于重现该问题。 窗口内的XAML: 代码背后: public MainWindow() { InitializeComponent(); LoadDoc(); } private void LoadDoc() { XpsDocument xpsDoc = new XpsDocument(“test.xps”, FileAccess.Read); docViewer.Document = xpsDoc.GetFixedDocumentSequence(); } test.xps文档包含一个TOC和两章,它们之间有大约40页。 导航到第二章时,问题变得清晰(它是3页关闭)。