[UWP小白日記-8]一些零碎的東西

設置啓動窗口大小

直接上代碼了沒什麼好解釋的了,既然能設置最小,那鐵定就能設置最大windows

public MainPage()
 {
    //設定窗口啓動顯示大小
    ApplicationView.PreferredLaunchViewSize = new Size(800, 600);
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
    
    this.InitializeComponent();
    
}

截取雙精度浮點數的整數部分,而不會自動進位。

double d = 1.88415;
Math.Truncate(d)

//結果爲 1 ,而不會是2。

自定義PivotHeader

天擼真是折騰,對於萌新來講,UWP控件的XAML樣式啊、狀態啊,動畫啊,簡直是噩夢。那麼長的XAML看得頭暈眼花+_+

<Pivot.HeaderTemplate>
                <DataTemplate x:Name="NavigationBar">
                    <Grid Width="{Binding Width}"
                          Margin="0"
                          Padding="0"
                          HorizontalAlignment="Center">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <TextBlock Text="{Binding Text}"
                                   FontSize="15"
                                   HorizontalAlignment="Center"/>
                        <SymbolIcon x:Name="triangleSymbolIcon"
                                    Symbol="Play" 
                                    Grid.Row="1"
                                    Margin="0"
                                    Opacity="0"
                                    HorizontalAlignment="Center"
                                    RenderTransformOrigin="0.5,0.5">
                            <SymbolIcon.RenderTransform>
                                <CompositeTransform x:Name="SymbolIconCompositeTransform" 
                                                    Rotation="-90"/>
                            </SymbolIcon.RenderTransform>
                            </SymbolIcon>
                    </Grid>
                </DataTemplate>
</Pivot.HeaderTemplate>
double Widths = ApplicationView.GetForCurrentView().VisibleBounds.Width / 3; //應爲我這隻有3個頭因此用獲取的屏幕實際寬度除以3來設置每一個頭的寬度
pivot.DataContext=new {Text="xxx",Width=Widths}; //結果不顯示

原本想設置pivot.DataContext的,結果不顯示,只能以下使用了ide

pivotItem.Header=new {Text="xxx",Width=Widths}; //關於new{}這是個匿名實例

這下能正常顯示了,可是無論在模擬器仍是真機上都有顯示問題、
還得改下pivotHeaderItem這個樣式,把其中的margin 和padding都改成0就正常了。動畫

在扒Pivot的時候發現個好玩的東西 每一個pivotitem中的子控件依次滑動進入item

同組的控件會同時滑入,不一樣組的會依次滑入this

<TextBlock Pivot.SlideInAnimationGroup="1"/>

UWP中設置手機端的狀態欄

必定要記住要添加 windows mobile for UWP這個包,否則沒法獲取到狀態欄
若是你是mobile 和PC都適配那麼你得家平臺判斷。不然會異常3d

//PC須要判斷一下平臺
            if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
            {
                #region 顯示頂部通知欄
                if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
                {
                    StatusBar statusBar = StatusBar.GetForCurrentView();
                    statusBar.BackgroundColor = Colors.CadetBlue; // 背景色
                    statusBar.ForegroundColor = Colors.White; // 前景色
                    statusBar.BackgroundOpacity = 1; // 透明度
                }
                #endregion
            }
            else
            {
                
                
                this.InitializeComponent();
            }
全屏模式
ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 
退出全屏
ApplicationView.GetForCurrentView().ExitFullScreenMode();

FontIcon在C#後臺代碼注意

在後臺代碼裏要注意\uE154這種圖標,若是你的圖標字符代碼大於4位的話會被截斷,以下圖:


\u這種寫法只能取到4位,超過就直接當字符串讀取了。
那要怎麼使用呢?code

\U0001F575

沒錯就是改爲大寫的U,而後加3個0。

orm

如何精肯定位ScrollViewer中控件的位置

在這裏很是感謝MSDN版主shao.meng的幫助。blog

var d = test2.TransformToVisual(scrollViewer.Content as UIElement);
  var p = d.TransformPoint(new Point(0, 0));
  scrollViewer.ChangeView(p.X, null, null);

test2:是要定位的控件。
scrollViewer:就是ScrollViewer控件。
new Point(0,0)要定位控件的哪一個點,這裏的場景是來定位在scrollViewer中的水平位置,那麼只要獲取x的值就OK了
https://msdn.microsoft.com/zh-cn/library/dn252763.aspx
巨硬已經爲咱們實現了滾動動畫了,默認是開啓的。第四個參數就是設置動畫是否開啓的。事件

UWP中怎麼獲取匿名實例中的值

下面是我一個在寫的記帳APP的彈出菜單,應爲菜單不會再動了因此寫死。ci

起名字簡直崩潰%>_<%;

new[]  {
                     new { Text="密碼",Width=Widths,Glyph="\uE1F7",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷體")},
                     new { Text="夜間模式",Width=Widths,Glyph="\uE82F",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷體")},
                     new { Text="備份",Width=Widths,Glyph="\uE753",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷體")},
                     new { Text="設置",Width=Widths,Glyph="\uE115",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷體")}
                    };

這個東西是綁定到一個listbox上的,在GetProperty()方法中填入上面定義的各個屬性的名稱便可。
以下代碼放在listbox的SelectionChanged事件中

var tempItem = (sender as ListBox).SelectedValue;
var temp= tempItem.GetType().GetProperty("Text").GetValue(tempItem, null);

怎麼在XAML中定義元素的訪問級別?

你們在碼字中確定發現,在一個page中定義了一個控件,可是在另一個page就訪問不了,提示有必定的訪問級別,一說這東西都知道是私有的。
那咱們怎麼辦呢?
你們可能碼字時沒注意,控件都有這個

x:FieldModifier="internal"

這玩意就是改元素的訪問級別的。
固然還有能夠使用

new MainPage().FindName(name) as XXX

怎麼讓一些控件隨着ScrollViewer的滾動顯示和隱藏呢?

我看到好多APP中都有這個實現,當時就想這是怎麼實現的呢,最開始難住個人是我在後臺CS中怎麼知道和設置前臺UI的顯示和隱藏呢。就想XMAL是視覺樹的樣子,那麼我就拿到他它的視覺樹就行了。

擼了半天找到這個

VisualStateManager
它裏面有個GotoState();經過它就能很好的控制其餘UI元素的顯示和隱藏了

他就是用來管理視覺樹狀態的,既然我要經過ScrollViewer的滾動來隱藏和顯示其餘的UI元素。 在ScrollViewer_ViewChanged事件中判斷好偏移的方向和偏移是否是大於某個值就OK了。

相關文章
相關標籤/搜索