読者です 読者をやめる 読者になる 読者になる

Rodhos Soft

備忘録を兼ねた技術的なメモです。

シンボルを利用したアイコン

以下を参照 Segoe MDL2 アイコンのガイドライン - Windows app developmentwindows8.1ではSegoe UI Symbolを使う。

Holdingでアイテムも取得したい。

ListView自体のHoldingでなく ItemTemplateのGrid等のHoldingを取ればそのsenderのDataContextにBindingしているアイテムが入っている。

ナビゲーション

NavigationHelperを用いる public HogePage() { this.InitializeComponent(); this.navigationHelper = new NavigationHelper(this); this.navigationHelper.LoadState += navigationHelper_LoadState; this.navigationHelper.SaveState += navigationHelper…

遷移にアニメーションをつけたい。

PageのTransitionsにTransitionCollectionのEntranceThemeTransitionを設定し微調整する。 <Page.Transitions> <TransitionCollection> <EntranceThemeTransition> </EntranceThemeTransition> </TransitionCollection> </Page.Transitions>

実行中のメソッド名を知りたいとき

リフレクションでgetCurrentMethodというのを見つけたがwinRTでは使えないようだ。 以下でRunTimeのCompileServicesを使った方法が紹介されていた。stackoverflow.com

バインディング ルーズに

何かUIになにかの値Bをバインディングさせたいが、この値は加工 する必要があるとする。IValueConverterを使わないとすると <UI.hoge = {Binding B, Mode=TwoWay} /> でやりたいとする。getterでごにょごにょすればいけるようだ。2. プロパティとして public B { get { return hoge() } set { hoge(</ui.hoge>…

リソースを共有する。ResourceDictionary

こんにちは。 今回は作ったスタイルをリソースディクショナリとして保存して使いまわす方法についてです。 分割することでxaml自体もみやすくなると思います。 方法は簡単で、リソースディクショナリを作ってApplication.xamlのリソースから読み込むだけです…

バインドしたデータのデザイン上の仮表示をする。d:DataContext

こんにちは。バインドを使うと動的に表示が変更されて便利ですがデザインを開発環境から確認したい場合の仮データを設定することがd:DataContextを用いて達成できます。前に作ったMooクラスをデザイン上のみMooTestクラスに置き換えてみます。 public class …

バインドする文字列をConverterで変換する。

どうもこんにちは。本日はバインドしてある文字列をConverterで変換してみます。 やることは、Converterを用意し、 それをxamlのリソースで定義しておいて、バインド時に設定するだけです。ConverterはIValueConveterを実装します。ここでは!!をつけるという…

バインドしておいてコードから変更を通知する。

どうもこんにちは続いてバインドしておいてコードで変化があったら通知するやりかたです。 ボタンを押すと、テキストを変化させ、その変化がUI側にPropertyChangedとして通知されテキストが変化します。 public class Moo : INotifyPropertyChanged { privat…

オリジナルクラスをxamlで使う

こんにちは、なんとなく記事っぽくしようと思いこんな出だしではじまります。 Windowsプログラミング入門(俺が)という記事です。最初はオリジナルのクラスをxamlで使ってみようという内容です。 public class Moo { public string txt{get; set;} public Moo…

ListViewの既定アニメーションの制御

スタイルの Transitionに設定されているものを削除

Lisviewのアイテムのスクロール時の絶対座標取得

ScrollViewerのViewChanged,ViewChangingのイベントを呼び出す。 それをするにはListViewのテンプレートをスタイルで定義。イベントが呼ばれたら ScrollViewer sv = sender as ScrollViewer; pt = this.TransformToVisual(null).TransformPoint(new Point(0,…

StyleSelector

文字通りスタイルを選択するクラス使うスタイルを以下で渡す。 protected override Style SelectStyleCore(object item, DependencyObject container)

Visual Studio2013

プロジェクトのアイコンの意味 点線のアイコンは隠しフォルダー。[すべてのファイルを表示]で見える。 以下に詳しい。 連載:簡単! Visual Studio 2013入門:第2回 Visual Studio 2013の基礎を知る (3/4) - @IT

パス、コピー

インストールした場所 StorageFolder stragefolder = Windows.ApplicationModel.Package.Current.InstalledLocation; StorageFolder datamodelFolder = await stragefolder.GetFolderAsync("FolderA"); StorageFile dbFileX = await datamodelFolder.GetFile…

SQLite

以下を参照している。WinRTでSQLiteが使えるようになったみたいなので試してみました - かずきのBlog@hatenaSQLite のプログラミング (Android と Windows ストア アプリ) - Windows app development SQLite for Windows Runtime パッケージ c#から使うにはs…

WinRTプログラミングのまとめ

Buttonのカスタマイズ - Rodhos Soft Buttonのカスタマイズ - Rodhos Soft

設定画面を出す

SettingPaneにメソッド登録 SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested; メソッド内に設定画面内に設定項目コマンドを作っていく。 1画面全体出したいならNavigate、部分画面ならSettingsFlyoutで。 private void OnComma…

GridViewで横にならべる

ItemsPanelTemplateをいじる。 横にならべるWrapGridを用意しMaximumRowsOrColumnsで横の最大数を設定する。VariableSizedWrapGridを使うとreorderができなくなるので注意(拡張 Extending GridView with Drag and Drop for Grouping and Variable Sized Ite…

Buttonのカスタマイズ

テンプレートの構成 <Grid> <VisualStateManager.VisualStateGroups> 略 </VisualStateManager.VisualStateGroups> <Border> <ContentPresenter/> </Border> <Rectangle /> <Rectangle /> </Grid> テンプレートを編集してみる まずボタンのテンプレートを編集を選択するとリソースにスタイルが定義される。 以下のような長い設定が自動的に作られる。。 <Style x:Key="ButtonStyle2" TargetType="Button">

Listのcast

BaseクラスをAで派生したクラスをBとする。 List<A> listA = listB.Cast<A>().ToList();</a></a>

Converterで値を変える

ボタンをバインディングしているブール値で画像を切り替えたいとする。 <UserControl.Resources> <local:ButtonConverter x:Key="bConverter"/> </UserControl.Resources> <Button Foreground="{Binding flag, Converter={StaticResource bConverter}}" /> のように、Conveterを通じて変換することになる。Converterの定義は以下のようにする。 class ButtonConverter : IValueConverter { obj…</button>

Binding

XAMLで他の要素と <Hoge Name="name" Poi ="pxpxpx"/> <Hoge Poi = "{Binding ElemntName=name, Path=Poi}"/></hoge></hoge>

ロゴの画像について

ピクセル密度に合わせたスケーリングのガイドライン - Windows app development

ViewModelの分離

XAMLとビハインドコードをビューとすると、 そこからロジックを分離させるのにViewModelを作る。ViewModelはINotifyPropertyChangedを実装し PageのDataContextにViewModelを設定しておけばビューと値をバインディングできる。 また、クリックイベントはICom…

ItemsControl

アイテムのコレクション表示クラス以下を参照するのがわかりやすい。 http://grabacr.net/archives/1240 主要プロパティ Template property 全体の外観 ItemsPanel property アイテム達全体の外観(Panelで指定) ItemContainerStyle property アイテムを包…

IItemContainerMapping

インデックスと対応するコンテナの関係のインターフェイス。ItemsControlが継承している。 ContainerFromIndex ContainerFromItem IndexFromContainer ItemFromContainer

UI系の継承関係図

上下逆だがこのようにわかれている。複雑。。

UIElement

UIの基盤クラスタップイベントなどを取得

FrameworkElement

レイアウトに共通するAPI 親はUIElement。 ActualHeight/Width 描画時の高さ/幅(readOnly) BaseUri XAML読み込み時のベースとなるURI DataContext データバインディングに使用するオブジェクト FlowDirection 配置方向(親要素内での兄弟についてのフロー方…

UIElementCollection

UIElementの順序付きコレクションインターフェースとしてIList、IEnumerable

Panel

PanelはUI的なオブジェクトの配置、整列を行う。(StackPanelはPanelの子) 親はFrameworkElement BackGround パネルの塗りつぶし色 Children パネルの子要素のコレクション(UIElementCollection) 以下は調査中 ChildrenTransitions (TransitionCollection) Is…

レイアウトを変える

MarginとPadding Marginは要素の外側の幅、{Left,Top,Right,Bottom} Paddingは要素の内側の幅、 以下の図が参考になる。 Windows フォーム コントロールでのマージンと埋め込み ListViewの隙間を埋めたい。 Windows8 ListView and space between items xaml …

リンク

C#関連 C# によるプログラミング入門 C# によるプログラミング入門非常にわかりやすい。

event

クラスを使用する側が処理を登録して、クラス内で呼び出される。 Objective-CでDelegateをBlocksで登録しておくようなもの。処理はイベントプロパティに登録する。 //イベント これは単に外からは追加削除でき、内部からは呼び出しをする処理 // 処理はDeleg…

Frameで部分的な画面遷移を行う

注:以下はうまくいってないと思われます。 ページ内で画面遷移を部分的に行いたい部分にFrameを置く。 <Frame Content="ここはフレームです" x:Name="myFrame" HorizontalAlignment="Left" Margin="95,50,0,0" VerticalAlignment="Top" Height="430" Width="1190" FontSize="80" BorderBrush="#FFF92A2A" Background="#FF423B21"/> 遷移先のページを作り、このフレームでNavigateすればよい。 myFrame.Navi…</frame>

動的に色をつける

動的には Brush brs = new SolidColorBrush(Color.Aqua); button.Bacground = brs;

アニメーション

こちらを参考にして作ってみた。 コントロールにアニメーションを追加する その1(WP7) | Tech Booster コントロールにアニメーションを追加する その1(WP7) | Tech Boosterボタンが押すと色が変わるようにしたい。まず、ボタンを用意する。アクア色にした。 <Button Content="Button" Click="Button_Click"> <Button.Background></button.background></button>…

Gridレイアウト 分割

横を1:2で分割するには <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="2*"/> </Grid.ColumnDefinitions> </Grid>

DependencyObject

依存関係プロパティが使えるようになる。通常のプロパティをCLRプロパティと呼んだりする。 値の変化で呼ばれるメソッドを登録できる。 class ClassDepTest : DependencyObject String型の名前hogeという依存プロパティをつくり、これが変更されたらHogeProp…

スタイル

統一的なスタイルを設定する場合に用いる。xaml中の同一ターゲット(X)に同一スタイルを設定したい場合は、Resoucesタグ内で <Style TargetType="X"> </Style> を設定すればよい。また、同じターゲットでも特定のものだけにスタイルを適用したい場合には、x:key=hogeとして、Resoucesタグ内…

リソース

Resourcesタグ内でx:keyでキーをつけて定義しておいて、取り出して使える。x:keyがhogeのとき、{StaticResouce hoge}で定義できる。外部ファイルを取り込みたい場合は、Resourcesタグ内で以下を呼ぶ。 <ResourceDictionary Source="hoge.xaml"/> 複数ある場合はMergedDictionaries</resourcedictionary>