質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1860閲覧

DataGridをWindow上でドラッグしたい

tride

総合スコア68

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/05/08 04:57

DataGridそのものをWindow上ドラッグさせたい場合、どうすればいいでしょうか。
以下の様に、DataGridタグのNameを"dataGrid"にしてxaml.cs上でdataGrid.ItemsSource でデータを入れれば良いだろうと思っていたのですが、エラーCS0103"現在のコンテキストにdataGridとという名前は存在しません"と出てしまいます。
尚、DataGridタグではなく、Imageタグでの場合はドラッグは正常に実行できます。

解決策、もしくはとっかかりでもご教授いただければ幸いです。

C#

1 <DataGrid Name="dataGrid" AutoGenerateColumns="False">

以下ソース
<MainWindow.xaml>

xaml

1 2 <Canvas Margin="10" Background="AliceBlue"> 3 4 <Thumb Width="150" Height="50" 5 Canvas.Left="0" Canvas.Top="0" 6 DragStarted="Thumb_DragStarted" 7 DragCompleted="Thumb_DragCompleted" 8 DragDelta="Thumb_DragDelta"> 9 <Thumb.Template> 10 <ControlTemplate> 11 <Border x:Name="Thumb_Border" BorderBrush="Red" BorderThickness="0"> 12 <!-- <Image Source="testimage.png"/>--> 13 <DataGrid Name="dataGrid" AutoGenerateColumns="False"> 14 <DataGrid.Columns> 15 <DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn> 16 <DataGridTextColumn Header="Gender" Binding="{Binding Gender}"></DataGridTextColumn> 17 <DataGridTextColumn Header="Age" Binding="{Binding Age}"></DataGridTextColumn> 18 <DataGridTextColumn Header="AuthMember" Binding="{Binding AuthMember}"></DataGridTextColumn> 19 </DataGrid.Columns> 20 </DataGrid> 21 </Border> 22 </ControlTemplate> 23 </Thumb.Template> 24 </Thumb> 25 </Canvas> 26

<MainWindow.xaml.cs>

C#

1 public MainWindow() 2 { 3 InitializeComponent(); 4 5 // 適当なデータ100件生成する 6 var data = new ObservableCollection<Person>( 7 Enumerable.Range(1, 100).Select(i => new Person 8 { 9 Name = "田中 太郎" + i, 10 Gender = i % 2 == 0 ? Gender.Men : Gender.Women, 11 Age = 20 + i % 50, 12 AuthMember = i % 5 == 0 13 })); 14 // DataGridに設定する 15 dataGrid.ItemsSource = data; 16 } 17 18 19 // 性別 20 public enum Gender 21 { 22 None, 23 Men, 24 Women 25 } 26 27 // DataGridに表示するデータ 28 public class Person 29 { 30 public string Name { get; set; } 31 public Gender Gender { get; set; } 32 public int Age { get; set; } 33 public bool AuthMember { get; set; } 34 }
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

(そうじゃないと言われそうな気もしますが)これでいいですか?

xml

1<Window 2 x:Class="Questions259769.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Width="800" 6 Height="450"> 7 <Canvas Margin="10" Background="AliceBlue"> 8 <Thumb 9 x:Name="thumb" 10 Height="150" 11 DragCompleted="Thumb_DragCompleted" 12 DragDelta="Thumb_DragDelta" 13 DragStarted="Thumb_DragStarted"> 14 <Thumb.Template> 15 <ControlTemplate> 16 <Border x:Name="Thumb_Border" BorderBrush="Red"> 17 <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}"> 18 <DataGrid.Columns> 19 <DataGridTextColumn Binding="{Binding Name}" Header="Name" /> 20 <DataGridTextColumn Binding="{Binding Gender}" Header="Gender" /> 21 <DataGridTextColumn Binding="{Binding Age}" Header="Age" /> 22 <DataGridTextColumn Binding="{Binding AuthMember}" Header="AuthMember" /> 23 </DataGrid.Columns> 24 </DataGrid> 25 </Border> 26 </ControlTemplate> 27 </Thumb.Template> 28 </Thumb> 29 </Canvas> 30</Window>

cs

1using System.Collections.ObjectModel; 2using System.Linq; 3using System.Windows; 4using System.Windows.Controls.Primitives; 5 6namespace Questions259769 7{ 8 public partial class MainWindow : Window 9 { 10 public MainWindow() 11 { 12 InitializeComponent(); 13 14 thumb.DataContext = new ObservableCollection<Person>( 15 Enumerable.Range(1, 100).Select(i => new Person 16 { 17 Name = "田中 太郎" + i, 18 Gender = i % 2 == 0 ? Gender.Men : Gender.Women, 19 Age = 20 + i % 50, 20 AuthMember = i % 5 == 0 21 })); 22 } 23 24 private void Thumb_DragCompleted(object sender, DragCompletedEventArgs e) { } 25 private void Thumb_DragDelta(object sender, DragDeltaEventArgs e) { } 26 private void Thumb_DragStarted(object sender, DragStartedEventArgs e) { } 27 28 public enum Gender { None, Men, Women, } 29 30 public class Person 31 { 32 public string Name { get; set; } 33 public Gender Gender { get; set; } 34 public int Age { get; set; } 35 public bool AuthMember { get; set; } 36 } 37 } 38}

アプリ画像

投稿2020/05/08 09:07

編集2023/07/21 13:54
TN8001

総合スコア9317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tride

2020/05/11 08:21

回答ありがとうございます。 試した所、意図通りの動きが出来た事を確認できました。 ただ、どうにもマウスの当たり判定が考えているものと違ったので、少し検討したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問