我用http://www.youtube.com/get_video?video_id=ID&t=SIGNATURE&fmt=18替换了
ID和SIGNATURE具有适当的值.但我没有看到任何保存或下载窗口,
而是一个空白的窗口.
我在Safari平台上使用Safari浏览器.帮助感谢.
我新客户所在的代码审查清单如下 -
实现Dispose和Finalize的类应该在Dispose实现中调用GC.SupressFinalize
为什么?
它是否应该读取为实现IDisposable接口的类应该在Dispose实现中调用GC.SupressFinalize?
或者我错过了一些愚蠢的东西?
.net garbage-collection idisposable finalizer suppressfinalize
我有一个ObservableCollection<Object1>
类型(Messages
在下面的代码中)绑定到一个ItemsControl
.Object1有两个属性即ErrMsg
和IsError
.ErrMsg
如果是错误(即如果IsError
是),我想显示红色,否则显示黑色.
<ItemsControl
Height="Auto"
Background="White"
ItemsSource="{Binding Messages}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock
Margin="5,0,0,0"
Text="{Binding ErrMsg}"
Width="Auto"
Foreground="Black">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger
Binding="{Binding IsError}"
Value="true">
<Setter
Property="TextBlock.Foreground"
Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
问题是所有的消息总是以黑色显示而不管IsError
价值如何?
我怎样才能做到这一点?
我将完全重新提出这个问题。所以这是一个大的编辑
我一直在寻找 WPF 专业人士关于他们设计过程的一些反馈。例如,当我设计一个网站时,在我编写任何 HTML、CSS、JavaScript 之前,我会在 Photoshop 中设计界面,这样我就可以向客户展示他们网站的外观证明。在我编写任何代码之前,我会选择样式、配色方案,大多数(如果不是全部)第三方图形(库存摄影)一旦客户批准设计,我就开始构建它。
我想知道设计 WPF 桌面应用程序的等价物是什么。在设计界面时,选择配色方案,选择按钮样式,选择可能进入其中的任何图像,通常先创建模型吗?您是否只是在构建图形的同时动态创建所有图形。或者只是在网上找到一个主题/皮肤并在您的应用程序中使用它是否更常见?
再说一次,我知道没有正确的答案,我只是想听听你们都在做什么。
谢谢
ps - 我有 Expression Blend 4,我擅长手写 XAML(不仅仅是在 Blend 中使用设计视图)。我的问题不是关于我应该使用什么工具来构建 WPF 应用程序,而是关于设计过程。
出于某种原因,此脚本在Firefox中不起作用:
document.onkeydown=function keypress(e) {
if (e.keyCode == 27) {
window.location = "/edit"
};
};
Run Code Online (Sandbox Code Playgroud)
它在Chrome中运行良好,但出于某种原因,它无法在Firefox中运行.
基本上,它的作用是/edit
在按下转义键时加载页面.
所以我浏览了一些代码,我遇到了:
public class Person
{
private string message;
public override string ToString()
{
return message;
}
public static Person CreateEmployee()
{
return new Employee();
}
class Employee : Person
{
public Employee()
{
this.message = "I inherit private members!";
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何使用/访问私有变量"消息",即使它是私有的?
WPF使用系统突出显示颜色来绘制所选文本的背景.我也想覆盖它.
我有一个textBox的控件模板:
<ControlTemplate TargetType="TextBox">
<Border Name="Border"
CornerRadius="2"
Padding="2"
Background="Transparent"
BorderThickness="0" >
<ScrollViewer Margin="0" x:Name="PART_ContentHost"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Border" Property="Background" Value="{StaticResource TextBoxDisabledBackgroundColor}"/>
<Setter Property="Foreground" Value="{StaticResource TextBoxDisabledForegroundColor}"/>
</Trigger>
<Trigger Property="IsReadOnly" Value="false">
<Setter TargetName="Border" Property="Background" Value="{StaticResource TextBoxBackgroundColor}"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
如何更改此模板以覆盖突出显示的文本和背景颜色?
我将ItemsControl与VirtualizingStackPanel一起作为项目面板,如下所示:
<ItemsControl Style="{StaticResource ItemsControl}" Name="itemsControl"
Margin="0,100,0,0" HorizontalAlignment="Stretch" Height="80">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
风格如下:
<Style x:Key="ItemsControl" TargetType="ItemsControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ItemsControl">
<ScrollViewer VerticalScrollBarVisibility="Hidden"
HorizontalScrollBarVisibility="Visible">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
我设置了一个包含100.000个元素作为ItemsSource的集合,并获得了非常好的性能.除了一件事,一切都很好.当我在其中一个文本框中输入文本然后开始滚动时,我发现该文本在整个列表中随处可见!
我理解VirtualizingStackPanel的功能.它会不断加载在滚动时变得可见的元素.我理解它的虚拟化技术的一些方面,但我不知道如何理解这种奇怪的行为.我没能在WPF/Silverlight虚拟化上找到好的文档,所以,请解释一下发生了什么
使用以下代码在文本框上绑定属性。当 UI 中的文本框值被修改时,属性值将被刷新。但我将值分配给代码后面的文本框 [txtNoOfSessions.Text = "1"] ,但它没有反映属性中的值。
<TextBox x:Name="txtNoOfSessions"
Text="{Binding Path=NoOfSessions,Mode=TwoWay}"
Height="23" Width="120" />
Run Code Online (Sandbox Code Playgroud) 我有一个与修改绑定到UI中的ListBox的ObservableCollection中的各个项目有关的问题。
UI中的用户可以多选项目,然后将其放在特定的索引处以对其重新排序。
因此,如果我有项目{0,1,2,3,4,5,6,7,8,9},用户可以选择项目2、5、7(按此顺序)并将其放置在索引3处,这样收藏就变成了,
{0,1,3,2,5,7,4,8,9}
我现在的工作方式是在控件上的ondrop()方法内部,例如:
foreach (Item item in draggedItems)
{
int oldIndex = collection.IndexOf(item.DataContext as MyItemType);
int newIndex = toDropIndex;
if (newIndex == collection.Count)
{
newIndex--;
}
if (oldIndex != newIndex)
{
collection.Move(oldIndex, newIndex);
}
Run Code Online (Sandbox Code Playgroud)
}
但是问题是,如果我将这些项目放在开始拖动第一个项目的索引之前,那么顺序将颠倒...因此集合变为,
{0,1,3,7,5,2,4,8,9}
如果我在索引3之后删除,它会很好地工作,但是如果我在3之前删除它,那么顺序将相反。
现在,我可以执行一个简单的删除操作,然后将所有项目插入想要的索引中,但是对我来说,“移动”具有将选择保留在ui中的优点(删除基本上取消了列表中的项目的选择。) ....所以我将需要使用move方法,
我上面的方法有什么问题以及如何解决?谢谢!
wpf ×6
.net ×4
c# ×3
background ×1
binding ×1
datatrigger ×1
esc-key ×1
finalizer ×1
firefox ×1
idisposable ×1
itemscontrol ×1
javascript ×1
keypress ×1
nested-class ×1
oop ×1
safari ×1
silverlight ×1
styles ×1
textbox ×1
youtube ×1