如果我执行以下操作:
public class Test
{
public static void Main()
{
List<Person> persons = new List<Person> { new Person() };
persons[0].Sneezing += new EventHandler(Person_Sneezing);
persons = null;
}
public static void Person_Sneezing(object sender, EventArgs e)
{
(sender as Person).CoverFace();
}
}
Run Code Online (Sandbox Code Playgroud)
亲自[0]的人是否仍然存在于内存中,因为它的打喷嚏代理具有对Person_Sneezing方法的引用或者它是否被GC收集?
是否可以在没有绑定部分的情况下使用验证?事情是我的文本框没有绑定任何对象,但我仍然想验证它的内容.我到目前为止找到的唯一方法是:
<TextBox Grid.Row="0" Grid.Column="1" MaxLength="50" x:Name="textBoxTubeName" Margin="5,5,0,5">
<TextBox.Text>
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" NotifyOnValidationError="True">
<Binding.ValidationRules>
<validation:InvalidCharactersRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
但同样,它只适用于TextBox.Text绑定到某些东西(在本例中为Name属性),如何在没有绑定的情况下进行此操作?
谢谢!
所以我只是从微软测试CLR Profiler,我做了一个小程序,创建了一个包含1,000,000个双打的List.我检查了堆,结果列表<>大小大约是124KB(我不记得确切,但它就在那附近).这真的震撼了我的世界,如果它有100万双打怎么可能是124KB呢?无论如何,之后我决定检查双[1000000].令我惊讶的是(因为这是我所期望的List <> = P),因此数组大小为7.6MB.巨大的差异!!
他们怎么会不一样?List <>如何管理其项目(令人难以置信)内存效率?我的意思是,它不像其他7.5 mb在其他地方,因为在我创建了100万双打之后,应用程序的大小大约增加了3或4 KB.
这是问题所在.我正在使用几种不同类型的对象绑定TreeView.每个对象都是一个节点,而某些对象有一个名为IsNodeExpanded的属性,当然,其他一些对象则没有.这是我的风格:
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsNodeExpanded, Mode=TwoWay}" />
</Style>
Run Code Online (Sandbox Code Playgroud)
现在,问题是当绑定没有这个属性的项时,我们在输出中得到这个错误:
System.Windows.Data Error: 39 : BindingExpression path error: 'IsNodeExpanded' property not found on 'object' ''CompensationChannel' (HashCode=56992474)'. BindingExpression:Path=IsNodeExpanded; DataItem='CompensationChannel' (HashCode=56992474); target element is 'TreeViewItem' (Name=''); target property is 'IsExpanded' (type 'Boolean')
Run Code Online (Sandbox Code Playgroud)
当然,我们得到了很多次.所以我试图想出一种基于它所拥有的DataType来切换TreeViewItem样式的方法.有关如何做到这一点的任何想法?
一些信息:我不能手动为每个项目做,因为我不是在XAML中创建它们,它们是从数据源动态创建的.
编辑:我找到了这个答案,但它对我没用.
我正在尝试将应用程序上传到Windows Phone Marketplace,但由于位置隐私政策,它仍然失败.在应用程序中,只有一个部件可以检查您的位置,用户必须手动调用它.基本上我们会显示一个地图和一个用于定位用户的按钮,当第一次按下此按钮时,我们会显示一个小的隐私策略,并且我们要求用户允许使用他的位置.即使这样,应用程序的认证也失败了.
我想知道是否有人有一个很好的例子说明隐私政策应该如何,以及是否应该在应用程序首次启动时显示,而不是用户激活位置服务时(就像我们目前正在这样做) .以及您可能提供的任何其他提示或建议.
这是应用程序失败的认证的唯一部分,所以一旦我得到一些好的答案,它就会准备好了.
谢谢!
我一直在试图显示多个问题GridViewItems在GridView不同的布局.基本上一切都会杀死虚拟化.如果我们使用VariableSizedWrapGridvirutalizaiton消失了,如果我们使用内置的分组功能virtualizaiton也消失了.迄今为止唯一的解决方案:
但这并没有真正削减它,因为它改变了设计.正如我所说,基本问题是你在GridView虚拟化中断时所做的任何小布局变化.有没有人找到一个很好的方法来避免这个问题在更改GridView或者每个人都必须坚持GridView默认情况下的外观?
哦,另一件事.不幸的是,WinRT不允许我们创建我们的自定义虚拟化面板,因为VirtualizingStackPanel构造函数是protected(或者private,不能正确记住).如果你能提供一些关于这个的信息,那也很棒=).
谢谢!
我有使用CommandBinding的控件(WPF),它的注册方式如下:
CommandBinding binding = new CommandBinding(ApplicationCommands.Delete, OnDeleteExecuted, CanExecuteDelete);
CommandManager.RegisterClassCommandBinding(typeof(MyObject), binding);
Run Code Online (Sandbox Code Playgroud)
因此,当我卸载控件时,我想清除此绑定。我将如何处理?
谢谢!
我只想弄清楚如何在WPF中获得滑块的拇指,如下所示:
Slider mySlider = new Slider();
Thumb thumb = slider.Thumb;
Run Code Online (Sandbox Code Playgroud)
现在我知道这不可能这么简单; 但必须有一个解决这个问题的工作.如果你知道,请告诉我.
谢谢!
我正在尝试在离开页面时进行动画,但是我收到此错误:
无法解析指定对象上的TargetProperty(UIElement.RenderTransform).(CompositeTransform.TranslateX).
我从一本书中复制了代码,然后我测试了这本书的示例代码并且它可以工作,但是我无法让它在我的应用程序上工作.有任何想法吗?这是我的代码:
XAML:
<phone:PhoneApplicationPage.Resources>
<Storyboard x:Name="HidePage" Completed="HidePage_Completed">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="phoneApplicationPage">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="-480"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="phoneApplicationPage">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="-800"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<phone:PhoneApplicationPage.Resources>
Run Code Online (Sandbox Code Playgroud)
C#
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
if (this.UriToNavigateTo == null)
{
e.Cancel = true;
UriToNavigateTo = e.Uri;
this.HidePage.Begin();
}
else
{
UriToNavigateTo = null;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我们有一个带有一些用户设置的xml文档.我们刚刚添加了一个新设置(在旧版xml文档中找不到)并XmlSerializer自动将其设置为false.我试过DefaultValueAttribute但它不起作用.关于如何获得默认值的任何想法true?这是代码:
private bool _property = true;
[DefaultValueAttribute(true)]
public bool Property
{
get { return _property; }
set
{
if (_property != value)
{
_property = value;
this.IsModified = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
c# ×4
wpf ×4
.net ×1
animation ×1
arrays ×1
binding ×1
data-binding ×1
generic-list ×1
memory-leaks ×1
styles ×1
textbox ×1
validation ×1
wpf-controls ×1