当我阅读有关WPF的书籍时,我看到作者提到XPS就像它是重要的东西.Windows还包括其XPS查看器,我已经看到它被列为Windows的"功能".
但为什么?重点是什么?谁用它呢?我的理解是,XPS基本上就像PDF,xhtml或ePub(只是xhtml)......甚至是Word的docx格式.这些格式中的许多功能都是相同的.
与任何其他格式相比,它似乎没有任何重大好处.在我看来,xhtml比XPS更有用,作为从RichTextBox保存和加载FlowDocuments的一种方法.我看过多个关于两者之间转换的博客.互联网上的大部分或全部富文本都是(x)html.除此之外,我认为没有人只是用它来发表他们的文档; PDF是首选.似乎XPS只是MS制作并决定推出的一些随机格式.我一般都喜欢MS,但他们确实有这种习惯.MS不能使用xhtml制作api吗?我想,在很多情况下,这会更有用.
那么,有没有必要使用XPS,特别是与我提到的其他格式(或任何我没有的)相比较?你有没有在你的程序中使用过XPS?
我的理解是,C#虽然是由Microsoft创建的,但它是一种可以用于.NET实现以外的编程语言.例如,我可以为C#创建一个编译器来定位本机x86或其他处理器甚至是JVM.我的理解不正确吗?有谁知道C#是否用于.NET以外的任何东西?
我见过一些指南或博客说this用来访问班级自己的成员是不好的.但是,我也看到了一些专业人士正在访问的地方this.我倾向于明确使用this,因为它似乎清楚地表明我正在访问的东西是类的一部分.
this.MyProperty = this.GetSomeValue();
Run Code Online (Sandbox Code Playgroud)
使用有一些优点或缺点this吗?这只是一种风格偏好吗?
情况
我正在创建一个C#/ WPF 4应用程序,使用SQL Compact Edition数据库作为实体框架的后端并使用ClickOnce进行部署.
我对使用数据库的应用程序很新,但我不怀疑我在设计和构建原始数据库时会遇到很多问题.但是,我担心将来我需要添加或更改一些功能,这些功能要求我在部署数据库并且用户在数据库中有数据后更改数据库设计.
问题
是否有可能通过clickonce更新将更新的数据库设计推送给用户,就像更改代码一样?
如果我这样做,用户的数据将如何受到影响?
这种事情在实际情况下是如何完成的?什么是最佳实践?
我认为在最坏的情况下,我需要在数据库或程序设置中构建某种"版本"编号,并创建一些例程来将用户当前版本的数据库迁移到新版本.
我很欣赏任何有关我的问题的见解.非常感谢.
特别是对于2D游戏,特别是silverlight/wpf游戏.
如果您考虑一下,可以将游戏对象划分为其视图(屏幕上的图形)和视图模型/模型(对象的状态,ai和其他数据).在Silverlight中,将每个对象设置为用户控件,将模型和视图放入单个对象中似乎很常见.我认为这样做的好处是简单.但是,它可能不那么干净,或者在潜在的"游戏引擎"方面有一些缺点.
你对这件事有什么看法?使用MVVM模式进行游戏开发有哪些优点和缺点?性能如何?欢迎所有的想法.
所以我正在尝试使用WPF用户控件从数据集中生成大量图像,数据集中的每个项目都会生成图像...
我希望我可以设置它以便我可以使用WPF数据绑定,并且对于数据集中的每个项目,创建我的用户控件的实例,设置与我的数据项对应的依赖项属性,然后绘制用户对图像的控制,但我遇到问题,让它全部工作(不确定数据绑定或绘图是否是我的问题)
对于大规模的代码转储感到抱歉,但我一直试图让它工作几个小时,而WPF只是不喜欢我(虽然在某些方面需要学习......)
我的用户控件如下所示:
<UserControl x:Class="Bleargh.ImageTemplate"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:Bleargh"
x:Name="ImageTemplateContainer"
Height="300" Width="300">
<Canvas>
<TextBlock Canvas.Left="50" Canvas.Top="50" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.Customer,ElementName=ImageTemplateContainer}" />
<TextBlock Canvas.Left="50" Canvas.Top="100" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.Location,ElementName=ImageTemplateContainer}" />
<TextBlock Canvas.Left="50" Canvas.Top="150" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.ItemNumber,ElementName=ImageTemplateContainer}" />
<TextBlock Canvas.Left="50" Canvas.Top="200" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.Description,ElementName=ImageTemplateContainer}" />
</Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
我已经向我的用户控件添加了一个类型为"Booking"的依赖项属性,我希望它将成为数据绑定值的来源:
public partial class ImageTemplate : UserControl
{
public static readonly DependencyProperty BookingProperty = DependencyProperty.Register("Booking", typeof(Booking), typeof(ImageTemplate));
public Booking Booking
{
get { return (Booking)GetValue(BookingProperty); …Run Code Online (Sandbox Code Playgroud) 我对数据库设计还不熟悉,但我理解基础知识.我正在创建一个关系数据库,我想做一些类似于创建可重用类型或类的东西.例如,假设我有一张Customer桌子和一张Item桌子.客户和项目通过标准的1对多关系相关联,因此Item有一个名为的列CustomerId.
我还想为每个客户和每个项目提供多个"备注" .在普通的OOP模型中,我只需创建一个Note类,并在需要时创建它的实例.当然,关系数据库是不同的.我正在考虑拥有一张Note桌子,我想在Customer和Note之间建立一对多的关系,以及Item和Note.那么问题是Note表必须为每个其他表有一个列,希望使用这个"类型".(见下面的例子)

我还想过,我可以在Note和Customer/Item(或其他)之间创建一个中间表.这将允许我避免在每个引用它的表的Note中有额外的列,因此当我添加更多需要注释的表时,注释可以保持不变.我认为这是更好的解决方案.(见例)

通常如何处理这种情况?我接近正确吗?我很感激有关如何设计我的数据库以获得我上面描述的那种功能的任何建议.
在创建课程时,我多次问过自己这个问题,特别是那些涉及收藏的课程,但我从来没有想出一个令人满意的答案.这是一个OOP设计问题.
例如,在支票簿注册程序中说我有一类BankAccount.BankAccounts包含涉及帐户名称,帐户类型(检查,保存,...的枚举)和其他数据的数据,但最重要的是Adjustment帐户中的s(存款或取款)的集合.
在这里,我有两个选项来保存调整的集合:
我认为这两种解决方案都很直观,当然,两者都有一些优点和缺点.例如,实例化允许类(在只允许单个基类的语言中)从另一个类继承,而从集合继承可以轻松控制Add,Remove和其他方法,而无需编写代理方法来"包装" '那些.
那么,在这种情况下,这是一种更好的方法吗?
我是C#的初学者,并且正在制作一个计算器.但我想禁用"GO!" 按钮,当textbox1中没有输入数字时,一旦用户在其中输入数字"GO!" 按钮再次启用...如何在C#中执行此操作?我尝试过这样的KeyDown和KeyPress事件,但从未奏效
private void Form1_Load(object sender, EventArgs e)
{
button15.Enabled = false;
button16.Enabled = false;
}
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
button15.Enabled = true;
button16.Enabled = true;
}
else
{
button15.Enabled = false;
button16.Enabled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
那怎么办呢?提前致谢 .
这个问题非常类似于我已经阅读并实现的Change WPF DataTemplate .... 它起初很漂亮,但我遇到了问题.
问题在于,当您的应用程序中使用主题(例如WPF Futures项目中的主题)(例如Expression Dark)时,ListBoxItems都会恢复为默认的WPF样式.这打破了这些元素的主题,例如,在黑色背景上生成黑色文本,否则文本将为白色.这也影响了我的TreeView,可能会影响其他类似的控件.
我认为这是因为为ListBox.ItemContainerStyle设置了冲突的样式 - 一个来自主题,一个来自切换数据模板.
我四处寻找其他解决方案,但还没有找到任何解决方案.以下是我到目前为止的主要内容或想法:
这是我的ListBox和相关部分:
<Window.Resources>
<DataTemplate x:Key="NormalTemplate">
...
</DataTemplate>
<DataTemplate x:Key="SelectedTemplate">
...
</DataTemplate>
</Window.Resources>
<ListBox x:Name="RegisterListBox" Grid.Row="0"
HorizontalContentAlignment="Stretch"
ItemsSource="{Binding Adjustments}">
<!-- this is from the post referenced above -->
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="ContentTemplate" Value="{StaticResource NormalTemplate}"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource SelectedTemplate}"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
Listbox.DataContext在代码中设置以启用ItemsSource绑定.
任何想法如何在保持对主题的无缝支持的同时实现上述功能?
c# ×5
wpf ×4
data-binding ×2
database ×2
.net-3.5 ×1
c++ ×1
class-design ×1
coding-style ×1
deployment ×1
events ×1
format ×1
image ×1
inheritance ×1
java ×1
keystroke ×1
mvvm ×1
oop ×1
silverlight ×1
sql-server ×1
templates ×1
themes ×1
types ×1
winforms ×1
xaml ×1
xps ×1