小编Car*_*rlo的帖子

垃圾收集器清除对象是否订阅了事件?

如果我执行以下操作:

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收集?

c# garbage-collection memory-leaks

5
推荐指数
2
解决办法
851
查看次数

WPF验证未绑定的文本框

是否可以在没有绑定部分的情况下使用验证?事情是我的文本框没有绑定任何对象,但我仍然想验证它的内容.我到目前为止找到的唯一方法是:

    <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属性),如何在没有绑定的情况下进行此操作?

谢谢!

validation wpf binding textbox

5
推荐指数
1
解决办法
2875
查看次数

C#List <double> size vs double [] size

所以我只是从微软测试CLR Profiler,我做了一个小程序,创建了一个包含1,000,000个双打的List.我检查了堆,结果列表<>大小大约是124KB(我不记得确切,但它就在那附近).这真的震撼了我的世界,如果它有100万双打怎么可能是124KB呢?无论如何,之后我决定检查双[1000000].令我惊讶的是(因为这是我所期望的List <> = P),因此数组大小为7.6MB.巨大的差异!!

他们怎么会不一样?List <>如何管理其项目(令人难以置信)内存效率?我的意思是,它不像其他7.5 mb在其他地方,因为在我创建了100万双打之后,应用程序的大小大约增加了3或4 KB.

.net c# arrays generic-list

5
推荐指数
1
解决办法
4460
查看次数

WPF基于数据类型的设置样式?

这是问题所在.我正在使用几种不同类型的对象绑定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中创建它们,它们是从数据源动态创建的.

编辑:我找到了这个答案,但它对我没用.

data-binding wpf styles

5
推荐指数
2
解决办法
6324
查看次数

WP7政策检查

我正在尝试将应用程序上传到Windows Phone Marketplace,但由于位置隐私政策,它仍然失败.在应用程序中,只有一个部件可以检查您的位置,用户必须手动调用它.基本上我们会显示一个地图和一个用于定位用户的按钮,当第一次按下此按钮时,我们会显示一个小的隐私策略,并且我们要求用户允许使用他的位置.即使这样,应用程序的认证也失败了.

我想知道是否有人有一个很好的例子说明隐私政策应该如何,以及是否应该在应用程序首次启动时显示,而不是用户激活位置服务时(就像我们目前正在这样做) .以及您可能提供的任何其他提示或建议.

这是应用程序失败的认证的唯一部分,所以一旦我得到一些好的答案,它就会准备好了.

谢谢!

windows-phone-7

5
推荐指数
1
解决办法
1495
查看次数

Winrt GridView虚拟化

我一直在试图显示多个问题GridViewItemsGridView不同的布局.基本上一切都会杀死虚拟化.如果我们使用VariableSizedWrapGridvirutalizaiton消失了,如果我们使用内置的分组功能virtualizaiton也消失了.迄今为止唯一的解决方案:

只有解决方案

但这并没有真正削减它,因为它改变了设计.正如我所说,基本问题是你在GridView虚拟化中断时所做的任何小布局变化.有没有人找到一个很好的方法来避免这个问题在更改GridView或者每个人都必须坚持GridView默认情况下的外观?

哦,另一件事.不幸的是,WinRT不允许我们创建我们的自定义虚拟化面板,因为VirtualizingStackPanel构造函数是protected(或者private,不能正确记住).如果你能提供一些关于这个的信息,那也很棒=).

谢谢!

virtualization windows-runtime

5
推荐指数
1
解决办法
776
查看次数

如何清除CommandManager注册的Command绑定?

我有使用CommandBinding的控件(WPF),它的注册方式如下:

CommandBinding binding = new CommandBinding(ApplicationCommands.Delete, OnDeleteExecuted, CanExecuteDelete);
CommandManager.RegisterClassCommandBinding(typeof(MyObject), binding);
Run Code Online (Sandbox Code Playgroud)

因此,当我卸载控件时,我想清除此绑定。我将如何处理?

谢谢!

c# wpf commandbinding

4
推荐指数
1
解决办法
2856
查看次数

获取滑块的拇指

我只想弄清楚如何在WPF中获得滑块的拇指,如下所示:

Slider mySlider = new Slider();

Thumb thumb = slider.Thumb;
Run Code Online (Sandbox Code Playgroud)

现在我知道这不可能这么简单; 但必须有一个解决这个问题的工作.如果你知道,请告诉我.

谢谢!

wpf wpf-controls

4
推荐指数
1
解决办法
5060
查看次数

Windows Phone 7导航动画

我正在尝试在离开页面时进行动画,但是我收到此错误:

无法解析指定对象上的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)

谢谢!

animation windows-phone-7

4
推荐指数
1
解决办法
4451
查看次数

XmlSerializer定义默认值

我们有一个带有一些用户设置的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# xmlserializer

4
推荐指数
2
解决办法
1万
查看次数