小编Ric*_*ire的帖子

关闭和处理 - 要打电话?

读完线程后SqlCommand.Dispose足够吗?关闭和处置WCF服务,我琢磨类,如SqlConnection的或几类从Stream类继承它的问题,如果我收处置,而不是关闭的一个?

.net

153
推荐指数
5
解决办法
11万
查看次数

触发器集合成员必须是EventTrigger类型

我创建了一个UserControl,类似于以下内容:

<UserControl>
    <StackPanel Orientation="Vertical">

        <StackPanel x:Name="Launch" Orientation="Horizontal" Visibility="Collapsed">
            <!-- Children here -->
        </StackPanel>

        <ToggleButton x:Name="ToggleLaunch" IsChecked="False" Content="Launch" />

    </StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用DataTrigger使"启动"StackPanel在检查ToggleButton时变得可见,否则保持折叠状态.但是,在运行时我收到一条错误,指出"失败的对象初始化(ISupportInitialize.EndInit).触发器集合成员必须是EventTrigger类型".我已经尝试将它添加到UserControl和StackPanel的触发器集合中但没有成功.我的触发器XAML如下所示:

<DataTrigger Binding="{Binding ElementName=ToggleLaunch, Path=IsChecked}" Value="True">
    <Setter TargetName="Launch" Property="UIElement.Visibility" Value="Visible" />
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)

.net wpf datatrigger

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

绑定到ActualWidth不起作用

在Silverlight 3.0应用程序中,我试图在画布中创建一个矩形,并使其拉伸画布的整个宽度.我试图通过绑定到ActualWidth父容器的属性(下面的示例)来做到这一点,但是当我没有看到任何绑定错误时,该值没有被绑定.矩形不可见,因为其宽度为零.另外尝试绑定到ActualWidth包含我的矩形的画布,但这没有区别.

我确实发现Microsoft Connect上记录了此错误,但没有列出变通方法.

有没有人能够解决这个问题,还是他们可以指出解决方案?

编辑:原始代码示例不准确我想要实现的目标,更新更清晰.

<UserControl>
    <Border BorderBrush="White"
            BorderThickness="1"
            CornerRadius="4"
            HorizontalAlignment="Center">
        <Grid x:Name="GridContainer">
            <Rectangle Fill="Aqua"
                       Width="150"
                       Height="400" />
            <Canvas>
                <Rectangle Width="{Binding Path=ActualWidth, ElementName=GridContainer}"
                           Height="30"
                           Fill="Red" />
            </Canvas>

            <StackPanel>
                <!-- other elements here -->
            </StackPanel>
        </Grid>
    </Border>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

silverlight actualwidth

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

视图模型的MVVM继承

我想知道如何在MVVM模式中使用View Models进行继承.在我的应用程序中,我有一个类似于以下内容的数据模型:

class CustomObject
{
    public string Title { get; set; }
}

class CustomItem : CustomObject
{
    public string Description { get; set; }
}

class CustomProduct : CustomItem
{
    public double Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我有一个ViewModelBase类,然后将有以下View Models:

  • CustomObjectViewModel
  • CustomItemViewModel
  • CustomProductViewModel

CustomObjectViewModel的粗略实现类似于以下内容:

class CustomObjectViewModel : ViewModelBase
{
    private readonly CustomObject _customObject;

    public CustomObjectViewModel( CustomObject customObject )
    {
        _customObject = customObject;
    }

    public string Title
    {
        // implementation excluded for brevity
    }
}
Run Code Online (Sandbox Code Playgroud)

对我来说似乎合乎逻辑的是,我的视图模型将以与我的模型相同的方式扩展自己(CustomItemViewModel扩展CustomObjectViewModel等等).但是,我注意到,当我继承继承树时,我将添加对同一对象的其他引用.这对我来说似乎相当过分,并且想知道如何处理这个问题以及是否有可能使它更清洁.

c# wpf design-patterns mvvm

18
推荐指数
3
解决办法
1万
查看次数

如何使DockPanel填充可用空间

我正在尝试购物车的内容ItemsControl(ListBox).为此,我创建了以下内容DataTemplate:

<DataTemplate x:Key="Templates.ShoppingCartProduct"
              DataType="{x:Type viewModel:ProductViewModel}">
    <DockPanel HorizontalAlignment="Stretch">
        <TextBlock DockPanel.Dock="Left"
                   Text="{Binding Path=Name}"
                   FontSize="10"
                   Foreground="Black" />
        <TextBlock DockPanel.Dock="Right"
                   Text="{Binding Path=Price, StringFormat=\{0:C\}}"
                   FontSize="10"
                   Foreground="Black" />
    </DockPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

然而,当物品显示在我的购物车中时,名称和价格TextBlocks正好位于彼此旁边,并且右侧有非常大量的空白.

想知道什么是强迫DockPanel伸展以填充所有可用空间的最佳方法ListItem

.net wpf autosize dockpanel

18
推荐指数
3
解决办法
5万
查看次数

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

SQL选择底部记录

我有一个查询,我希望检索最旧的X记录.目前我的查询类似于以下内容:

SELECT Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate DESC
Run Code Online (Sandbox Code Playgroud)

我知道通常我会删除'DESC'关键字以切换记录的顺序,但在这种情况下,我仍然希望获得最新项目的记录.

所以我想知道是否有任何方法可以执行此查询,以便我将最旧的X项目排序,以便最新的项目是第一个.我还应该补充一点,我的数据库存在于SQL Server 2005上.

sql t-sql sql-server

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

Xcode 4缺少Build Settings中的下拉列表

我正在使用Xcode 4,在Build Settings中,所有下拉列表都已消失.

我没有下拉列表,而是有文本框.

看到这个图像,例如:

在此输入图像描述

我很困惑:如何再次启用下拉列表?

iphone xcode ios4

8
推荐指数
1
解决办法
1919
查看次数

使用ScatterView在MVVM中拖放

我正在尝试在使用MVVM模式构建的Surface应用程序中实现拖放功能.我在努力想出一种在坚持MVVM模式的同时实现这一目标的方法.虽然我试图在Surface应用程序中执行此操作,但我认为该解决方案通用性足以应用于WPF.

我正在尝试生成以下功能:

  • 用户联系ScatterViewItem中的FrameworkElement以开始拖动操作(ScatterViewItem的特定部分启动拖放功能)
  • 当拖动操作开始时,会创建该ScatterViewItem的副本并将其强加于原始ScatterViewItem,该副本将是用户将拖动并最终删除的内容
  • 用户可以将项目放到另一个ScatterViewItem(放在单独的ScatterView中)

整体交互非常类似于Surface SDK中提供的ShoppingCart应用程序,除了源对象包含在ScatterView而不是ListBox中.

我不确定如何继续以便在我的ViewModel之间进行正确的通信以提供此功能.我遇到的主要问题是当用户联系FrameworkElement时复制ScatterViewItem.

wpf drag-and-drop mvvm pixelsense

6
推荐指数
1
解决办法
7619
查看次数

编辑对话框,带有绑定和WPF中的确定/取消

如何使用绑定来编辑类的属性,并在对话框中使用OK-Cancel?

我的第一个想法是:

public partial class EditServerDialog : Window {
    private NewsServer _newsServer;

    public EditServerDialog(NewsServer newsServer) {
        InitializeComponent();

        this.DataContext = (_newsServer = newsServer).Clone();
    }

    private void ButtonClick(object sender, RoutedEventArgs e)
    {
        switch (((Button)e.OriginalSource).Content.ToString()) {
            case "OK":
                _newsServer = (NewsServer)this.DataContext;
                this.Close();
                break;
            case "Cancel":
                this.Close();
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在交换机中,情况"OK",DataContext包含正确的信息,但最初传递的NewsServer实例不会更改.

.net data-binding wpf

6
推荐指数
3
解决办法
1652
查看次数