public class Base : ICustomItem
{
}
public class Book : Base
{
public List<Author> Authors;
public List<Bookmark> Bookmarks;
}
public class Author : Base
{
}
public class Bookmark : Base
{
}
public ObservableCollection(ICustomItem) MyItems;
public ListCollectionView MyItemsView { get; } = new ListCollectionView(MyItems);
Run Code Online (Sandbox Code Playgroud)
通过这样的设置,我可以显示包含书籍,作者和书签的单一列表.我可以深入研究一本书,并查看具体的书籍作者和书签.
问题#1:我想深入了解作者,并查看所有作者的书籍.最重要的是,我希望看到该作者所有书籍的所有书签.
一个简单的解决方案是为每个其他类添加适当的列表.例如.
public List<Book> Books到Author类.然而,这种失控的,当你开始增加更多的类别(例如Genre,Publisher,Language等)
问题2:我还希望能够按照任何选定标记的编号对列表进行排序,包括任何相关的标记类型:
MyItemsView.SortDescriptions.Add(new SortDescription("Bookmarks.Count", Descending);
作者拥有的书签数量应该是所有书籍的所有书签的总和.
构建此类数据的好方法是什么,以便不必为每种类型维护多个查找集合?使用Book作为真理的来源不是一个好方法?理想情况下,我可以按任何标签类型排序.
在我的实际应用中,我已经解决了问题#1:当深入研究例如.一Author,我发现所有的Book在MyItems与匹配的作者,然后把所有的Genre,Publisher等从图书列表拉.通过这种方式,我可以根据书籍提供的标签显示作者拥有的所有标签.(我在列表视图模型的范围内执行此操作,因为我知道我正在深入研究哪些项目并且可以访问主 …
如何通过名称找到我的方法“button_Click”?如果我公开它,它会起作用,但我宁愿将其私有化。
class Test : BaseTest
{
public Test()
{
LoadMethod();
}
}
class BaseTest
{
public void LoadMethod()
{
//WHY IS THIS NULL???
var eventMethod = GetType().GetMethod("button_Click", BindingFlags.NonPublic | BindingFlags.Instance);
}
void button_Click(object sender, EventArgs e) { }
}
Run Code Online (Sandbox Code Playgroud) 我正在将即时消息传递应用聊天界面重新设计为流程文档。这是我要复制的设计。
到目前为止,这是我使用XamlPad尝试过的。我的主要问题是对齐和/或列跨度。编辑:顶部的最新尝试
<TabControl Width="500">
<TabItem Header="Julien Rosen">
<FlowDocument>
<Table>
<Table.Columns>
<TableColumn Width="60" />
<TableColumn />
<TableColumn Width="100" />
</Table.Columns>
<TableRowGroup>
<TableRow>
<TableCell RowSpan="2">
<Paragraph>
<Image Source="c:\logo.png" Height="35" />
<LineBreak />
<Image Margin="0,5,5,0" Source="c:\file.png" Height="10" />
<Image Source="c:\flag-green.png" Height="10" />
</Paragraph>
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<Paragraph FontStyle="Italic" FontSize="12">
<TextBox BorderThickness="0" IsReadOnly="False" Background="Transparent" IsEnabled="False">
Julien Rosen:
</TextBox>
<TextBox BorderThickness="0" IsReadOnly="False" Background="Transparent" IsEnabled="False">
03/01/2013 14:17
</TextBox>
</Paragraph>
<Paragraph Margin="0,10,0,0" FontSize="12">
This is a new attempt using rows differently
</Paragraph>
</TableCell>
</TableRow>
</TableRowGroup> …Run Code Online (Sandbox Code Playgroud) 我想要一个文本框,用户可以在其中切换 - 输入或按住ctrl-enter添加换行符而不提交.我发现以下关于如何进行ctrl-enter的帖子
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/67ef5912-aaf7-43cc-bfb0-88acdc37f09c
效果很好!所以我添加了自己的块以捕获shift输入,如下所示:
else if (((keyData & swf.Keys.Shift) == swf.Keys.Shift) && ((keyData & swf.Keys.Enter) == swf.Keys.Enter) && Keyboard.FocusedElement == txtMessage)
{
// SHIFT ENTER PRESSED!
}
Run Code Online (Sandbox Code Playgroud)
除了现在该框正在捕获其他移位组合,例如问号和波浪形大括号,然后添加换行符.我需要更改什么来防止这种情况发生?
我使用signalR将消息推送到服务器并向下推送到特定客户端.
当我发送消息时,接收客户端从我的signalR服务器发送一个ReceiveMessage函数调用,该函数映射到我的应用程序中的静态类函数.然后静态类尝试执行new Chat()(我的消息传递窗口类)以在接收端打开消息窗口.
这引发了 calling thread must be STA, because many UI components require this.
我之前曾与代表合作过简单的表单元素(比如更改文本框),但我不明白如何在这种情况下应用它.当我读到Invoke它时,会在某种形式的对象上调用它,这在我的情况下是不存在的?
TLDR; 如何从静态类函数调用创建和显示表单的新实例
如果没有选择或只选择一个项目,如何禁用listboxitem上下文菜单?
ListBox有一个SelectedItems属性,但它是只读的,你不能绑定它.
<ListBox ItemsSource="{Binding Items}" SelectionMode="Extended">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="GOGO" />
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)