小编Fre*_*lad的帖子

WPF ListView每行都有按钮

我有一个列表,Games其中只有a ID,a Date和a Time.我将此列表设置为DataContext.

然后,我有一个DataTemplate这样的游戏:

 <DataTemplate DataType="{x:Type loc:Game}">
     <Grid>
         <Grid.RowDefinitions>
             <RowDefinition Height="auto"></RowDefinition>
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width="100"></ColumnDefinition>
             <ColumnDefinition Width="100"></ColumnDefinition>
             <ColumnDefinition Width="100"></ColumnDefinition>
         </Grid.ColumnDefinitions>
         <TextBlock Name="dateBlock" Grid.Column="0" Grid.Row="1"
                    Text="{Binding Date,  StringFormat=d}"></TextBlock>
         <TextBlock Name="TimeBlock" Grid.Column="1" Grid.Row="1"
                    Text="{Binding Time}"></TextBlock>
         //need to but a button here for each row
     </Grid>
 </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

要使用模板,我只是这样做:

    <ListBox ItemsSource="{Binding}"></ListBox>    
Run Code Online (Sandbox Code Playgroud)

我需要Button在此列表视图中的每一行添加一个具有相同点击事件的行,但会以某种方式传递点击该按钮的游戏的ID.

我怎样才能做到这一点?我被卡住了.如果它没有意义让我知道,我会尝试更好地解释.

c# wpf xaml listview datatemplate

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

21
推荐指数
1
解决办法
7837
查看次数

在样式的代码背后的BasedOn ="{StaticResource {x:Type TextBox}}"

如何在代码中设置以下内容?

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
Run Code Online (Sandbox Code Playgroud)

我正在使用App.xaml中合并的主题.它适用于所有控件,但是当我为某些东西定义样式时,例如TextBox,除非我BasedOn像上面一样使用主题样式,否则它将获得默认TextBox样式.

现在我正在创建一个DataGridTextColumn代码背后,我无法让它的BasedOn部分工作EditingElementStyle

Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = ...?;
Run Code Online (Sandbox Code Playgroud)

有什么建议?此外,有没有办法获得主题样式而不是使用默认样式而不使用BasedOn?

谢谢

c# wpf xaml styles basedon

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

网格中的扩展器

毫无疑问,这将是直截了当的,但出于任何理由,我的思绪在其上留下了空白.

我有一个小的,不可调整大小的窗口(325x450),里面有3个扩展器,垂直堆叠.每个Expander都包含一个ItemsControl,它可能包含很多项目,因此需要滚动.

我似乎无法做到的是如何布局扩展器,以便它们扩展以填充任何可用空间而无需将其他元素从屏幕上移开.我可以通过使用网格并将每个扩展器放在一个具有*高度的行中来实现我所追求的目标,但这意味着它们总是占据窗口的1/3,这会破坏扩展器的点:)

我正在努力实现的蹩脚图表:

在此输入图像描述

wpf layout

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

如何在mysql中找到自由世界城市数据库

有谁知道我在哪里可以找到开源世界城市数据库,其中包括:

  • 城市名称用不同的语言
  • 地区/州/省
  • 国家
  • IP地址范围
  • 经度和纬度

php mysql database

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

从图像创建矢量

我已经阅读了1000篇帖子说这是可能的,但对于我的生活,我找不到如何在PNG中创建XAML中的向量.有人可以指点我解释如何从PNG创建一个矢量用于WPF应用程序吗?

wpf xaml vector bitmap

14
推荐指数
1
解决办法
4482
查看次数

WPF bing贴图控制折线/多边形在第一次添加到集合时不绘制

我正在研究这个表面项目,我们有一个bing贴图控件,我们希望通过数据绑定在地图上绘制折线.

发生的奇怪行为是,当我单击"添加"按钮时,地图上没有任何反应.如果我稍微移动地图,则会在地图上绘制折线.另一种有效的方案是单击添加按钮一次,没有任何反应,再次单击它会绘制两条折线.(在我的手册集中,我有4个LocationCollections),因此第3次点击和第4次点击同样会发生两条线的绘制.

我完全不知道在哪里可以解决这个问题.我已经尝试订阅Layoutupdated事件,这两种情况都会发生.还向observablecollection添加了一个collectionchanged事件,以查看是否触发了add,并且是触发了它.我尝试的另一件事是将折线更改为图钉并从管道视图模型中的位置集合中获取第一个位置,而不是预期的工作.

我已经上传了一个示例项目,如果你想看看自己发生了什么.

真的希望有人能指出我正确的方向,因为我不再有线索了.

您可以在下面找到我编写的代码:

我有以下viewmodels:

MainViewModel

public class MainViewModel
{
    private ObservableCollection<PipelineViewModel> _pipelines;

    public ObservableCollection<PipelineViewModel> Pipes
    {
        get { return _pipelines; }
    }

    public MainViewModel()
    {
        _pipelines = new ObservableCollection<PipelineViewModel>();
    }
}
Run Code Online (Sandbox Code Playgroud)

PipelineViewModel具有实现INotifyPropertyChanged的Locations集合:

PipelineViewModel

public class PipelineViewModel : ViewModelBase
{
    private LocationCollection _locations;

    public string Geometry { get; set; }
    public string Label { get; set; }
    public LocationCollection Locations
    {
        get { return _locations; }
        set
        {
            _locations = value;
            RaisePropertyChanged("Locations");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的XAML如下所示: …

c# wpf xaml bing-maps polyline

14
推荐指数
1
解决办法
5099
查看次数

命名空间中不存在来自WPFToolkit的控制

我添加了参考WPFToolkit.dll,我添加了以下行的.xaml文件:

xmlns:toolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WpfToolkit"
Run Code Online (Sandbox Code Playgroud)

在跟随之前:

xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
Run Code Online (Sandbox Code Playgroud)

在两种情况下都符合要求

<toolkit:NumericUpDown Value="10" Increment="1" Maximum="10" Minimum="0" />
Run Code Online (Sandbox Code Playgroud)

我有错误:

错误1 XML名称空间"http://schemas.microsoft.com/wpf/2008/toolkit"中不存在标记"NumericUpDown".第20行位置18. C:\ Users\Diament\Documents\Visual Studio 2008\Projects\MyBasicFlyffKeystroke\MyBasicFlyffKeystroke\Window.xaml 20 18 MyBasicFlyffKeystroke

问题出在哪儿?:(

c# wpf .net-3.5

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

DataGrid RowDetails宽度问题

假设我有一个像这样定义的DataGrid

<DataGrid AreRowDetailsFrozen="True"
          ItemsSource="{Binding MyCollection}"
          AutoGenerateColumns="False">
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <Border CornerRadius="5" BorderBrush="Red"
                    BorderThickness="2" Background="Black">
                <TextBlock Foreground="White" Text="{Binding RowDetails}"
                           TextWrapping="Wrap"/>
            </Border>
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
    <DataGrid.Columns>
        <DataGridTextColumn Header="0" Binding="{Binding Value1}"/>
        <DataGridTextColumn Header="1" Binding="{Binding Value2}"/>
        <DataGridTextColumn Header="2" Binding="{Binding Value3}"/>
        <DataGridTextColumn Header="3" Binding="{Binding Value4}"/>
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

在有和没有RowDetails的情况下看起来像这样

替代文字

在右边的图片中,我得到了一个永不包裹的非常长的DataGridRow.
是否可以让RowDetails使用与DataGrid相同的宽度而不影响Width本身?

我尝试过的东西实现了包装但不是令人满意的方式

  • 在Border或TextBlock上设置Width或MaxWidth.不是很有活力.
  • 在DataGrid上设置ScrollViewer.Horizo​​ntalScrollBarVisibility ="Disabled".当柱子不适合时不太好.

wpf datagrid wpfdatagrid rowdetails

13
推荐指数
3
解决办法
8201
查看次数

WPF图片,如何消除模糊?

我有 在此输入图像描述

我需要 在此输入图像描述

XAML:

<Image Height="500"
       MouseLeftButtonDown="image_MouseLeftButtonDown"
       MouseRightButtonDown="image_MouseRightButtonDown"
       Name="image"
       Stretch="Fill"
       Width="500" />`
Run Code Online (Sandbox Code Playgroud)

C#:

  wbmap = new WriteableBitmap(50, 50, 500, 500, PixelFormats.Indexed8, palette);
  wbmap.WritePixels(new Int32Rect(0, 0, wbmap.PixelWidth, wbmap.PixelHeight), pixels, wbmap.PixelWidth * wbmap.Format.BitsPerPixel / 8, 0);
  image.Source = wbmap;
Run Code Online (Sandbox Code Playgroud)

wpf image-processing wpf-controls

13
推荐指数
2
解决办法
5637
查看次数